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黑帽编程 3.4 跨越VLAN详解
Sep 28 Python
python下实现二叉堆以及堆排序的示例
Sep 29 Python
python入门教程 python入门神图一张
Mar 05 Python
python如何去除字符串中不想要的字符
Jul 05 Python
Django rest framework工具包简单用法示例
Jul 20 Python
Django中的forms组件实例详解
Nov 08 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
Apr 29 Python
python实现动态创建类的方法分析
Jun 25 Python
python加载自定义词典实例
Dec 06 Python
python实现将json多行数据传入到mysql中使用
Dec 31 Python
pytorch::Dataloader中的迭代器和生成器应用详解
Jan 03 Python
pytorch之inception_v3的实现案例
Jan 06 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
DOTA2 玩家自创拉野攻略 特色英雄快速成长篇
2020/04/20 DOTA
PHP+MYSQL开发工具及资源收藏
2007/01/02 PHP
增加反向链接的101个方法 站长推荐
2007/01/31 PHP
PHP字符编码问题之GB2312 VS UTF-8解决方法
2011/06/23 PHP
php实现的Timer页面运行时间监测类
2014/09/24 PHP
php批量添加数据与批量更新数据的实现方法
2014/12/16 PHP
鼠标滑上去后图片放大浮出效果的js代码
2011/05/28 Javascript
js获取图片大小的函数代码
2011/09/20 Javascript
Three.js源码阅读笔记(光照部分)
2012/12/27 Javascript
js判断屏幕分辨率的代码
2013/07/16 Javascript
jquery对ajax的支持介绍
2013/12/10 Javascript
JS中的log对象获取以及debug的写法介绍
2014/03/03 Javascript
javascript工厂方式定义对象
2014/12/26 Javascript
jQuery实现按键盘方向键翻页特效
2015/03/18 Javascript
js改变html的原有内容实现方法
2016/10/05 Javascript
jQueryeasyui 中如何使用datetimebox 取两个日期间相隔的天数
2017/06/13 jQuery
详谈js模块化规范
2017/07/07 Javascript
使用travis-ci如何持续部署node.js应用详解
2017/07/30 Javascript
react native仿微信PopupWindow效果的实例代码
2017/08/07 Javascript
js使用html2canvas实现屏幕截取的示例代码
2017/08/28 Javascript
浅谈Node.js CVE-2017-14849 漏洞分析(详细步骤)
2017/11/10 Javascript
jquery在启动页面时,自动加载数据的实例
2018/01/22 jQuery
如何用webpack4.0撸单页/多页脚手架 (jquery, react, vue, typescript)
2019/06/18 jQuery
微信小程序可滑动周日历组件使用详解
2019/10/21 Javascript
如何基于jQuery实现五角星评分
2020/09/02 jQuery
Windows下Python2与Python3两个版本共存的方法详解
2017/02/12 Python
Python学习小技巧之利用字典的默认行为
2017/05/20 Python
python中不能连接超时的问题及解决方法
2018/06/10 Python
解决python中 f.write写入中文出错的问题
2018/10/31 Python
python3 中文乱码与默认编码格式设定方法
2018/10/31 Python
Python爬虫将爬取的图片写入world文档的方法
2018/11/07 Python
雅高酒店中国:Accorhotels.com China
2018/03/26 全球购物
提拔干部考察材料
2014/05/26 职场文书
学雷锋志愿者活动方案
2014/08/21 职场文书
工作总结之小学教师体育工作范文(3篇)
2019/10/07 职场文书
Java实现贪吃蛇游戏的示例代码
2022/09/23 Java/Android