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中endswith()函数的基本使用
Apr 07 Python
Python实现桶排序与快速排序算法结合应用示例
Nov 22 Python
django上传图片并生成缩略图方法示例
Dec 11 Python
Python supervisor强大的进程管理工具的使用
Apr 24 Python
利用python和百度地图API实现数据地图标注的方法
May 13 Python
python 用所有标点符号分隔句子的示例
Jul 15 Python
python+selenium 点击单选框-radio的实现方法
Sep 03 Python
Django 自定义分页器的实现代码
Nov 24 Python
Python中url标签使用知识点总结
Jan 16 Python
关于Python Tkinter Button控件command传参问题的解决方式
Mar 04 Python
Numpy数组的广播机制的实现
Nov 03 Python
python turtle绘图命令及案例
Nov 23 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&java(一)
2006/10/09 PHP
PHP的APC模块实现上传进度条
2015/10/27 PHP
PHP批量去除BOM头内容信息代码
2016/03/11 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
2016/07/21 PHP
jquery之empty()与remove()区别说明
2010/09/10 Javascript
jquery 滚动条事件简单实例
2013/07/12 Javascript
javascript实现的DES加密示例
2013/10/30 Javascript
简洁Ajax函数处理(示例代码)
2013/11/15 Javascript
JS脚本defer的作用示例介绍
2014/01/02 Javascript
Jquery实现仿腾讯娱乐频道焦点图(幻灯片)特效
2015/03/06 Javascript
简单谈谈Javascript中类型的判断
2015/10/19 Javascript
全面解析Bootstrap表单使用方法(表单按钮)
2015/11/24 Javascript
JavaScript动态创建div等元素实例讲解
2016/01/06 Javascript
vue.js实现数据动态响应 Vue.set的简单应用
2017/06/15 Javascript
vue.js使用v-if实现显示与隐藏功能示例
2018/07/06 Javascript
jQuery利用FormData上传文件实现批量上传
2018/12/04 jQuery
javascript实现blob加密视频源地址的方法
2019/08/08 Javascript
jQuery zTree插件快速实现目录树
2019/08/16 jQuery
详解JavaScript的this指向和绑定
2020/09/08 Javascript
[47:03]完美世界DOTA2联赛PWL S3 Galaxy Racer vs Phoenix 第二场 12.10
2020/12/13 DOTA
Python中for循环详解
2014/01/17 Python
Python中使用装饰器和元编程实现结构体类实例
2015/01/28 Python
对python列表里的字典元素去重方法详解
2019/01/21 Python
学习python分支结构
2019/05/17 Python
解决python中使用PYQT时中文乱码问题
2019/06/17 Python
Python使用plt.boxplot() 参数绘制箱线图
2020/06/04 Python
Keras自动下载的数据集/模型存放位置介绍
2020/06/19 Python
html5借用repeating-linear-gradient实现一把刻度尺(ruler)
2019/09/09 HTML / CSS
阿里健康官方海外旗舰店:阿里健康国际自营
2017/11/24 全球购物
阿联酋航空假期:Emirates Holidays
2018/03/20 全球购物
2019年c语言经典面试题目
2016/08/17 面试题
机械设计及其自动化专业推荐信
2013/10/31 职场文书
公司年夜饭通知
2015/04/25 职场文书
民间借贷纠纷起诉书
2015/08/03 职场文书
校园安全教育心得体会
2016/01/15 职场文书
python 实现mysql自动增删分区的方法
2021/04/01 Python