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爬虫之使用Scrapy框架编写爬虫
Nov 07 Python
基于Python的文件类型和字符串详解
Dec 21 Python
计算机二级python学习教程(2) python语言基本语法元素
May 16 Python
OpenCV搞定腾讯滑块验证码的实现代码
May 18 Python
Python 解决OPEN读文件报错 ,路径以及r的问题
Dec 19 Python
利用setuptools打包python程序的方法步骤
Jan 18 Python
TensorFlow Saver:保存和读取模型参数.ckpt实例
Feb 10 Python
Python GUI库PyQt5图形和特效样式QSS介绍
Feb 25 Python
使用python实现下载我们想听的歌曲,速度超快
Jul 09 Python
Python Django路径配置实现过程解析
Nov 05 Python
pandas apply使用多列计算生成新的列实现示例
Feb 24 Python
通过Python把学姐照片做成拼图游戏
Feb 15 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实现图片等比例放大和缩小的方法详解
2013/06/06 PHP
PHP按行读取、处理较大CSV文件的代码实例
2014/04/09 PHP
ThinkPHP中Session用法详解
2014/11/29 PHP
微信 开发生成带参数的二维码的实例
2016/11/23 PHP
基于php实现的验证码小程序
2016/12/13 PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
2017/01/12 PHP
mapper--图片热点区域高亮组件官方站点
2007/12/22 Javascript
JavaScript脚本性能优化注意事项
2008/11/18 Javascript
javascript 对象比较实现代码
2009/04/27 Javascript
JS特权方法定义作用以及与公有方法的区别
2013/03/18 Javascript
select标签模拟/美化方法采用JS外挂式插件
2013/04/01 Javascript
浅析Javascript中“==”与“===”的区别
2014/12/23 Javascript
jQuery实现统计输入文字个数的方法
2015/03/11 Javascript
在JavaScript中操作数组之map()方法的使用
2015/06/09 Javascript
原生js实现tab选项卡切换
2020/03/23 Javascript
AngularJS 应用身份认证的技巧总结
2016/11/07 Javascript
微信分享调用jssdk实例
2017/06/08 Javascript
详解vue前后台数据交互vue-resource文档
2017/07/19 Javascript
基于nodejs实现微信支付功能
2017/12/20 NodeJs
微信小程序图片左右摆动效果详解
2019/07/13 Javascript
基于jQuery拖拽事件的封装
2020/11/29 jQuery
vue+elementUI动态增加表单项并添加验证的代码详解
2020/12/17 Vue.js
[57:31]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第一场 2月1日
2021/03/11 DOTA
python与sqlite3实现解密chrome cookie实例代码
2018/01/20 Python
python爬虫简单的添加代理进行访问的实现代码
2019/04/04 Python
python 实现12bit灰度图像映射到8bit显示的方法
2019/07/08 Python
Python3的高阶函数map,reduce,filter的示例详解
2019/07/23 Python
Python 二叉树的层序建立与三种遍历实现详解
2019/07/29 Python
Django中提供的6种缓存方式详解
2019/08/05 Python
Python读取多列数据以及用matplotlib制作图表方法实例
2020/09/23 Python
伦敦时尚生活的缩影:LN-CC
2017/01/24 全球购物
会计学毕业生求职信
2014/06/25 职场文书
教师学习三严三实心得体会
2014/10/13 职场文书
学生会生活部工作总结2015
2015/03/31 职场文书
python中pandas对多列进行分组统计的实现
2021/06/18 Python
Python Flask搭建yolov3目标检测系统详解流程
2021/11/07 Python