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实现文件内容批量追加的方法示例
Aug 29 Python
基于python 字符编码的理解
Sep 02 Python
Python 多核并行计算的示例代码
Nov 07 Python
Python3安装Scrapy的方法步骤
Nov 23 Python
Python简单实现socket信息发送与监听功能示例
Jan 03 Python
python实现朴素贝叶斯分类器
Mar 28 Python
Python检测网络延迟的代码
May 15 Python
浅谈Python2、Python3相对路径、绝对路径导入方法
Jun 22 Python
Python使用matplotlib实现交换式图形显示功能示例
Sep 06 Python
python实现两个一维列表合并成一个二维列表
Dec 02 Python
Pytorch实现WGAN用于动漫头像生成
Mar 04 Python
Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案
Apr 20 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技术实现加载字体并保存成图片
2015/07/27 PHP
PHP网站建设的流程与步骤分享
2015/09/25 PHP
php 从一个数组中随机的取出若干个不同的数实例
2016/12/31 PHP
JavaScript实现网页截图功能
2014/10/16 Javascript
js实现表单多按钮提交action的处理方法
2015/10/24 Javascript
JS图片放大效果简单实现代码
2016/09/08 Javascript
jQuery图片切换动画效果
2017/02/28 Javascript
JavaScript运动框架 解决防抖动问题、悬浮对联(二)
2017/05/17 Javascript
vue 2.0项目中如何引入element-ui详解
2017/09/06 Javascript
Node.js搭建小程序后台服务
2018/01/03 Javascript
Vue2.x中利用@font-size引入字体图标报错的解决方法
2018/09/28 Javascript
使用vuepress搭建静态博客的示例代码
2019/02/14 Javascript
JavaScript原型继承和原型链原理详解
2020/02/04 Javascript
JavaScript设计模式之观察者模式与发布订阅模式详解
2020/05/07 Javascript
Vue 事件的$event参数=事件的值案例
2021/01/29 Vue.js
Vue单页面应用中实现Markdown渲染
2021/02/14 Vue.js
[43:41]OG vs Newbee 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
python自动化测试之setUp与tearDown实例
2014/09/28 Python
python使用PyGame绘制图像并保存为图片文件的方法
2015/04/24 Python
django站点管理详解
2017/12/12 Python
Python logging模块用法示例
2018/08/28 Python
python装饰器简介---这一篇也许就够了(推荐)
2019/04/01 Python
python如何统计代码运行的时长
2019/07/24 Python
Django 自定义分页器的实现代码
2019/11/24 Python
python 实现一个反向单位矩阵示例
2019/11/29 Python
Python读写操作csv和excle文件代码实例
2020/03/16 Python
EMU Australia澳大利亚官网:澳大利亚本土雪地靴品牌
2019/07/24 全球购物
Farfetch阿联酋:奢侈品牌时尚购物平台
2019/07/26 全球购物
你常见到的runtime exception
2016/09/05 面试题
大学生自我评价范文分享
2014/02/21 职场文书
公证委托书
2014/08/01 职场文书
给校长的一封检讨书
2014/09/20 职场文书
预备党员转正材料
2014/12/19 职场文书
考试后的感想
2015/08/07 职场文书
盘点2020年适合农村地区创业的项目
2019/10/16 职场文书
从原生JavaScript到React深入理解
2022/07/23 Javascript