定义全局变量,在项目的任何位置都可以获取到变量的值

在include App=》include文件夹下=》context_processors.py 里定义需要获取的变量

#!/usr/bin/env python
# coding:utf-8
# Author:Jan
"""
定义django template的全局模板变量
"""
from monsys.models import MonObject
from include.common.common import add def monitor_status(request):
"""主页面显示全局的各种监控对象的状态数据"""
service_obj = MonObject.objects.get(name="服务").monobjectsub_set.all()
product_obj = MonObject.objects.get(name="业务").monobjectsub_set.all()
host_obj = MonObject.objects.get(name="主机").monobjectsub_set.all()
container_obj = MonObject.objects.get(name="容器").monobjectsub_set.all()
status = {
"monitor_product": {
"normal": 0,
"warning": 0,
"danger": 0,
},
"monitor_service": {
"normal": reduce(add, [mos.normal for mos in service_obj]),
"warning": reduce(add, [mos.warn for mos in service_obj]),
"danger": reduce(add, [mos.danger for mos in service_obj]),
"unknown": reduce(add, [mos.unknown for mos in service_obj]),
},
"monitor_system": {
"normal": reduce(add, [mos.normal for mos in host_obj]) + reduce(add, [mos.normal for mos in container_obj]),
"warning": reduce(add, [mos.warn for mos in host_obj]) + reduce(add, [mos.warn for mos in container_obj]),
"danger": reduce(add, [mos.danger for mos in host_obj]) + reduce(add, [mos.danger for mos in container_obj]),
"unknown": reduce(add, [mos.unknown for mos in host_obj]) + reduce(add, [mos.unknown for mos in container_obj]),
},
}
return status

然后在settings.py的TEMPLATES里注册这个文件夹

TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
os.path.join(BASE_DIR, 'statics'),
],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'include.middleware.context_processors.monitor_status', # 自定义全局监控状态变量
],
},
},
]

然后就可以在项目的任何位置取到需要的变量了

Django定义全局变量的更多相关文章

  1. C语言中定义全局变量

    (1)在C语言的头文件中定义变量出现的问题 最好不要傻嘻嘻的在头文件里定义什么东西.比如全局变量: /*xx头文件*/ #ifndef  _XX_头文件.H #define  _XX_头文件.H in ...

  2. angularjs定义全局变量

    angularjs定义全局变量 三种方法 直接外层定义全局变量 利用ng的value定义全局变量 利用ng的constant定义全局变量 Takl is cheap, Show me the code ...

  3. C/C++定义全局变量/常量几种方法的区别

    在讨论全局变量之前我们先要明白几个基本的概念: 1. 编译单元(模块):    在IDE开发工具大行其道的今天,对于编译的一些概念很多人已经不再清楚了,很多程序员最怕的就是处理连接错误(LINK ER ...

  4. 用extern定义全局变量

    1.extern的作用 extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a, int b); 则告 ...

  5. c语言头文件中定义全局变量的问题

    c语言头文件中定义全局变量的问题 (转http://www.cnblogs.com/Sorean/) 先说一下,全局变量只能定义在 函数里面,任意函数,其他函数在使用的时候用extern声明.千万不要 ...

  6. CodeIgniter 定义“全局变量-global variable”,可以在所有controller,model和view中使用

    本文抄自http://www.cnblogs.com/webu/archive/2012/11/20/2779999.html 第一次正儿八经用CodeIgniter框架做项目,结果不会定义全局变量, ...

  7. C++定义全局变量/常量几种方法的区别

    在讨论全局变量之前我们先要明白几个基本的概念: 1. 编译单元(模块):    在IDE开发工具大行其道的今天,对于编译的一些概念很多人已经不再清楚了,很多程序员最怕的就是处理连接错误(LINK ER ...

  8. dede定义全局变量(include/common.inc.php)及调用方式

    dede定义全局变量的文件include/common.inc.php及使用   在include/common.inc.php文件里,dede定义了大量的全局变量,详细自己去看看   dede模板里 ...

  9. Yii Framework2.0开发教程(4)在yii中定义全局变量

    在yii中定义全局变量最好的地方是入口脚本处.也就是web目录中的index.php文件 比如我们在defined('YII_ENV') or define('YII_ENV', 'dev');后写上 ...

随机推荐

  1. jquery.artDialog.source.js学习

    1 关键的对象关系art = jQuery = $function artDialog() {...}artDialog.fn = artDialog.prototype = artDialog.fn ...

  2. springcloud Eureka Finchley.RELEASE 版本

    创建一个父项目cloud-demo pom.xml <?xml version="1.0" encoding="UTF-8"?> <proje ...

  3. 控制类名(className 属性)设置或返回class属性

    控制类名(className 属性) className 属性设置或返回元素的class 属性. 语法: object.className = classname 作用: 1.获取元素的class 属 ...

  4. 并发和多线程(九)--AbstractQueuedSynchronizer排他锁基本原理

    AbstractQueuedSynchronizer简称为AQS,AQS是ReentrantLock.CountdownLatch.CycliBarrier等并发工具的原理/基础,所以了解AQS的原理 ...

  5. Django + Uwsgi + Nginx 的生产环境部署实战

    目录 Django + Uwsgi + Nginx 的生产环境部署实战 安装Uwsgi 一.使用命令来启动django项目 二.使用配置文件来启动我们的Django项目 安装Nginx 配置Nginx ...

  6. springboot+mybatis+达梦数据库

    准备工作: 首先,安装达梦6数据库.安装完之后如下建表 然后,很重要的一点(写法一定要这样写,否则无限报错) 达梦数据库查表方式: select  *  from    "库名". ...

  7. css过渡属性transition简单示例

    2.transition 简单实例 demo1→在线预览源代码 效果 demo2→在线预览源代码 效果 demo3→在线预览源代码 效果

  8. 修改文本框和文本域placeholder样式

    input::-webkit-input-placeholder, textarea::-webkit-input-placeholder { font-size:20px; padding:20px ...

  9. Android HttpClient 用法以及乱码解决

    一.Post提交 并可以实现多文件上传 // 创建DefaultHttpClient对象 HttpClient httpclient = new DefaultHttpClient(); // 创建一 ...

  10. JS中的Map和Set

    使用iterable内置的forEach方法 var a = ['A', 'B', 'C']; a.forEach(function (element, index, array) { // elem ...