django创建自定义模板处理器的实例详解


Posted in Python onAugust 14, 2017

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下面的处理器。

如有疑问请留言或者到本站社区交流讨论,大家共同进步,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
Python3编程实现获取阿里云ECS实例及监控的方法
Aug 18 Python
在java中如何定义一个抽象属性示例详解
Aug 18 Python
Python实现的爬虫刷回复功能示例
Jun 07 Python
numpy中的ndarray方法和属性详解
May 27 Python
简单了解python的break、continue、pass
Jul 08 Python
搭建python django虚拟环境完整步骤详解
Jul 08 Python
python实现截取屏幕保存文件,删除N天前截图的例子
Aug 27 Python
详解Python3定时器任务代码
Sep 23 Python
详解Django配置优化方法
Nov 18 Python
Python实现汇率转换操作
May 03 Python
基于Python绘制子图及子图刻度的变换等的问题
May 23 Python
Pygame Event事件模块的详细示例
Nov 17 Python
Python微信库:itchat的用法详解
Aug 14 #Python
Python实现的概率分布运算操作示例
Aug 14 #Python
python itchat实现微信好友头像拼接图的示例代码
Aug 14 #Python
python的mysqldb安装步骤详解
Aug 14 #Python
python制作小说爬虫实录
Aug 14 #Python
python安装Scrapy图文教程
Aug 14 #Python
基于python时间处理方法(详解)
Aug 14 #Python
You might like
Warning: session_destroy() : Trying to destroy uninitialized sessionq错误
2011/06/16 PHP
浅析PHP数据导出知识点
2018/02/17 PHP
a标签的css样式四个状态
2021/03/09 HTML / CSS
javascript下查找父节点的简单方法
2007/08/13 Javascript
jQuery EasyUI API 中文文档 - Tree树使用介绍
2011/11/19 Javascript
jQuery学习笔记 操作jQuery对象 CSS处理
2012/09/19 Javascript
解决checkbox的attr(checked)一直为undefined问题
2014/06/16 Javascript
javascript控制图片播放的实现代码
2020/07/29 Javascript
javascript图片滑动效果实现
2021/01/28 Javascript
js 将input框中的输入自动转化成半角大写(税号输入框)
2017/02/16 Javascript
jquery Form轻松实现文件上传
2017/05/24 jQuery
vue.js实现单选框、复选框和下拉框示例
2017/07/18 Javascript
JavaScript正则表达式校验与递归函数实际应用实例解析
2017/08/04 Javascript
angularjs实现天气预报功能
2020/06/16 Javascript
JS求Number类型数组中最大元素方法
2018/04/08 Javascript
微信小程序中this.data与this.setData的区别详解
2018/09/17 Javascript
基于JS+HTML实现弹窗提示是否确认提交功能
2020/06/17 Javascript
js实现飞机大战游戏
2020/08/26 Javascript
[51:06]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS Liquid
2018/03/30 DOTA
[37:47]IG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
[04:00]黄浦江畔,再会英雄——完美世界DOTA2 TI9应援视频
2019/07/31 DOTA
玩转python爬虫之正则表达式
2016/02/17 Python
Ubuntu下使用Python实现游戏制作中的切分图片功能
2018/03/30 Python
PyCharm 设置SciView工具窗口的方法
2019/01/15 Python
python接口自动化测试之接口数据依赖的实现方法
2019/04/26 Python
Python时间差中seconds和total_seconds的区别详解
2019/12/26 Python
python 爬虫请求模块requests详解
2020/12/04 Python
关于VPN
2012/06/10 面试题
人民教师求职自荐信
2014/03/12 职场文书
企业党建工作汇报材料
2014/08/19 职场文书
英文版辞职信
2015/02/28 职场文书
民事答辩状格式范文
2015/05/21 职场文书
敬老院活动感想
2015/08/07 职场文书
2016国培学习心得体会
2016/01/08 职场文书
2016年小学端午节活动总结
2016/04/01 职场文书
如何用vue实现网页截图你知道吗
2021/11/17 Vue.js