django创建自定义模板处理器的实例详解
作者:lqh 时间:2022-07-29 19:50:00
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下面的处理器。
如有疑问请留言或者到本站社区交流讨论,大家共同进步,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
来源:http://blog.csdn.net/nunchakushuang/article/details/52029516
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
表单设计中的网页视觉体验
![](https://img.aspxhome.com/file/UploadPic/20086/26/2008626134221567s.jpg)
python实战游戏之史上最难最虐的扫雷游戏没有之一
![](https://img.aspxhome.com/file/2023/8/66748_0s.gif)
python设计微型小说网站(基于Django+Bootstrap框架)
![](https://img.aspxhome.com/file/2023/6/65046_0s.jpg)
支持多风格变换的ASP分页类
PHP Laravel门面的实现原理详解
让复杂导航设计变得简单
![](https://img.aspxhome.com/file/UploadPic/20081/7/200817122654620s.jpg)
PHP读取和写入CSV文件的示例代码
SQL Server导出表到EXCEL文件的存储过程
解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了
![](https://img.aspxhome.com/file/2023/7/59637_0s.jpg)
Javascript 动画初探(原理)
原生JS封装_new函数实现new关键字的功能
![](https://img.aspxhome.com/file/2023/1/56041_0s.png)
Python 递归式实现二叉树前序,中序,后序遍历
![](https://img.aspxhome.com/file/2023/7/66777_0s.png)
表格可读性提升分析
![](https://img.aspxhome.com/file/UploadPic/20105/19/readability_table-34s.png)
golang架构设计开闭原则手写实现
WEB打印大全
微信小程序输入多行文本的实战记录
![](https://img.aspxhome.com/file/2023/1/56311_0s.png)
分享十款最出色的PHP安全开发库中文详细介绍
![](https://img.aspxhome.com/file/2023/1/55491_0s.jpg)
Dreamweaver基础技巧全面接触
![](https://img.aspxhome.com/file/UploadPic/20071/2007131103144537s.gif)