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 相关文章推荐
python实现划词翻译
Apr 23 Python
Python脚本实现DNSPod DNS动态解析域名
Feb 14 Python
Python定时器实例代码
Nov 01 Python
Python编程给numpy矩阵添加一列方法示例
Dec 04 Python
对numpy中数组元素的统一赋值实例
Apr 04 Python
Python读写及备份oracle数据库操作示例
May 17 Python
Python并发:多线程与多进程的详解
Jan 24 Python
详解python函数的闭包问题(内部函数与外部函数详述)
May 17 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
Feb 29 Python
使用Django xadmin 实现修改时间选择器为不可输入状态
Mar 30 Python
Python模拟登录requests.Session应用详解
Nov 17 Python
python实现层次聚类的方法
Nov 01 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
PHP去除数组中重复的元素并按键名排序函数
2008/08/18 PHP
解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
2013/06/24 PHP
php时间函数用法分析
2016/05/28 PHP
经常用的图片在容器中的水平垂直居中实例
2007/06/10 Javascript
jQuery插件开发全解析
2012/10/10 Javascript
jquery插件之定时查询待处理任务数量
2014/05/01 Javascript
js,jquery滚动/跳转页面到指定位置的实现思路
2014/06/03 Javascript
JavaScript数值转换的三种方式总结
2014/07/31 Javascript
js+css实现tab菜单切换效果的方法
2015/01/20 Javascript
JavaScript中的闭包介绍
2015/03/15 Javascript
Position属性之relative用法
2015/12/14 Javascript
jQuery表格插件datatables用法汇总
2016/03/29 Javascript
JavaScript计算器网页版实现代码分享
2016/07/15 Javascript
基于JavaScript实现点击页面任何位置返回
2016/08/31 Javascript
Vue.js实现一个SPA登录页面的过程【推荐】
2017/04/29 Javascript
node.js中axios使用心得总结
2017/11/29 Javascript
Vue动态路由缓存不相互影响的解决办法
2019/02/19 Javascript
基于js实现判断浏览器类型代码实例
2020/07/17 Javascript
[02:00]最后,我终于出了辉耀
2018/03/27 DOTA
python把1变成01的步骤总结
2019/02/27 Python
详解python-图像处理(映射变换)
2019/03/22 Python
python变量命名的7条建议
2019/07/04 Python
Python安装及Pycharm安装使用教程图解
2019/09/20 Python
python实现的Iou与Giou代码
2020/01/18 Python
Python统计文本词汇出现次数的实例代码
2020/02/27 Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
2020/03/19 Python
如何用css3实现switch组件开关的方法
2018/02/09 HTML / CSS
捷克体育用品购物网站:D-sport
2017/12/28 全球购物
ReVive利维肤美国官网:RéVive Skincare
2018/04/18 全球购物
业绩考核岗位职责
2014/02/01 职场文书
职业培训师职业生涯规划
2014/02/18 职场文书
抗洪救灾先进集体事迹材料
2014/05/26 职场文书
违纪学生保证书
2015/02/27 职场文书
创业计划书之奶茶店开店方案范本!
2019/08/06 职场文书
诺贝尔奖获得者名言100句:句句启人心智,值永久收藏
2019/08/09 职场文书
js面向对象编程OOP及函数式编程FP区别
2022/07/07 Javascript