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 相关文章推荐
pygame学习笔记(3):运动速率、时间、事件、文字
Apr 15 Python
Python3指定路径寻找符合匹配模式文件
May 22 Python
python基础教程项目五之虚拟茶话会
Apr 02 Python
Flask框架信号用法实例分析
Jul 24 Python
python使用PIL给图片添加文字生成海报示例
Aug 17 Python
python判断输入日期为第几天的实例
Nov 13 Python
Python 实现微信防撤回功能
Apr 29 Python
python根据多个文件名批量查找文件
Aug 13 Python
Python多线程模块Threading用法示例小结
Nov 09 Python
Django中使用MySQL5.5的教程
Dec 18 Python
Django中Aggregation聚合的基本使用方法
Jul 09 Python
python 利用toapi库自动生成api
Oct 19 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
yii2高级应用之自定义组件实现全局使用图片上传功能的方法
2016/10/08 PHP
thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
2019/05/29 PHP
jQuery总体架构的理解分析
2011/03/07 Javascript
JQuery优缺点分析说明
2011/04/10 Javascript
jquery连缀语法如何实现
2012/11/29 Javascript
选择复选框按钮置灰否则按钮可用
2014/05/22 Javascript
Ext修改GridPanel数据和字体颜色、css属性等
2014/06/13 Javascript
AngularJS入门知识之MVW类框架的编程思想探讨
2014/12/08 Javascript
举例讲解Node.js中的Writable对象
2015/07/29 Javascript
通过点击jqgrid表格弹出需要的表格数据
2015/12/02 Javascript
学习javascript面向对象 掌握创建对象的9种方式
2016/01/04 Javascript
JavaScript中的ParseInt("08")和“09”返回0的原因分析及解决办法
2016/05/19 Javascript
H5用户注册表单页 注册模态框!
2016/09/17 Javascript
利用JQuery操作iframe父页面、子页面的元素和方法汇总
2017/09/10 jQuery
vue-router之解决addRoutes使用遇到的坑
2020/07/19 Javascript
使用Python判断IP地址合法性的方法实例
2014/03/13 Python
python简单程序读取串口信息的方法
2015/03/13 Python
Django1.7+python 2.78+pycharm配置mysql数据库
2016/10/09 Python
Python逐行读取文件中内容的简单方法
2019/02/26 Python
python 处理微信对账单数据的实例代码
2019/07/19 Python
HTML5 Canvas的性能提高技巧经验分享
2013/07/02 HTML / CSS
Wedgwood美国官网:英国骨瓷,精美礼品及家居装饰
2018/02/17 全球购物
static关键字的用法
2013/10/07 面试题
文史专业毕业生自荐信
2013/11/17 职场文书
五型班组建设方案
2014/02/10 职场文书
渡河少年教学反思
2014/02/12 职场文书
会计岗位描述
2014/02/22 职场文书
施工安全责任书
2014/04/14 职场文书
信用社主任竞聘演讲稿
2014/05/23 职场文书
路政管理求职信
2014/06/18 职场文书
教师群众路线剖析材料
2014/09/29 职场文书
教导主任个人总结
2015/03/03 职场文书
趣味运动会广播稿
2015/08/19 职场文书
如何通过cmd 连接阿里云服务器
2022/04/18 Servers
css3 选择器
2022/05/11 HTML / CSS
Python  序列化反序列化和异常处理的问题小结
2022/12/24 Python