您的位置:首页 > 编程语言 > Go语言

django创建自定义模板处理器

2016-07-25 23:58 281 查看

django创建自定义模板处理器:

一、需求来源:

在django开发中,页面是通过template(模板)进行渲染的,对于一些数据,可以通过
{{ 变量 }}
的方式进行传递。但是,如果整个网站中,或者整个网站的大部分页面都用到了一些变量或者数据,那么每次渲染的时候都传递一次这几个数据显得相当的冗余。这与django的DRY(Don’t repeat yourself)思想不符,因此django提供了一种方式,让你能自定义处理器。

二、django默认的处理器:

在django开发中,django默认为你加载了四个处理器,这些处理器是django包自带的。你可以在settings.py中的
TEMPLATES
OPTIONS
context_processors
中找到所有django为你默认加载的处理器。

其中有包括:

'django.template.context_processors.debug',                'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',                'django.contrib.messages.context_processors.messages',


三、自定义django处理器:

建议在项目的主app下(也就是你的项目名称的app下)创建一个文件叫做
context_processors.py


不管是自定义的处理器还是django自带的处理器,都是定义一个函数,这个函数带有一个request的参数,返回一个字典,用来表示模板中的参数。

比如我们要创建一个带有个人信息的处理器,格式如下:

def mycontact(request):
return {
'telephone': 'aaa',
'qq': 'bbb',
'email': 'cc@163.com'
}


在settings.py配置文件中,找到
TEMPLATES
里面的
context_processors
,然后在后面添加你的自定义的处理器,比如我们的项目名称叫mysite,然后我把
context_processors.py
放到了mysite/mysite下面,也就是和
settings.py
同级的目录下,因此加载的路劲为
mysite.context_processors.mycontact
,因此,现在的
context_processors
中的数据如下:

'context_processors': [
'mysite.context_processors.mycontact',
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
]


以后你就可以在你的模板文件中,通过
{{变量}}
的方式引入你的变量了。

注意事项:你必须在
TEMPLATES
中将
APP_DIRS
设置为
True
,django才会加载你放在django的app下面的处理器。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  django python