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比较2个xml内容的方法
May 11 Python
python中sys.argv参数用法实例分析
May 20 Python
总结Python编程中函数的使用要点
Mar 20 Python
详解Python中使用base64模块来处理base64编码的方法
Jul 01 Python
Python使用wxPython实现计算器
Jan 30 Python
python的staticmethod与classmethod实现实例代码
Feb 11 Python
python实现傅里叶级数展开的实现
Jul 21 Python
python实现两张图片拼接为一张图片并保存
Jul 16 Python
决策树剪枝算法的python实现方法详解
Sep 18 Python
python超时重新请求解决方案
Oct 21 Python
opencv-python 读取图像并转换颜色空间实例
Dec 09 Python
tensorflow 获取checkpoint中的变量列表实例
Feb 11 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
新版mysql+apache+php Linux安装指南
2006/10/09 PHP
分割GBK中文遭遇乱码的解决方法
2013/08/09 PHP
ThinkPHP通过AJAX返回JSON的两种实现方法
2014/12/18 PHP
phpmyadmin下载、安装、配置教程
2017/05/16 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
2019/03/11 PHP
ajax 同步请求和异步请求的差异分析
2011/07/04 Javascript
EXTJS记事本 当CompositeField遇上RowEditor
2011/07/31 Javascript
js中的push和join方法使用介绍
2013/10/08 Javascript
javascript中indexOf技术详解
2015/05/07 Javascript
Bootstrap每天必学之导航
2015/11/26 Javascript
jQuery each函数源码分析
2016/05/25 Javascript
json定义及jquery操作json的方法
2016/10/03 Javascript
JavaScript实现隐藏省略文字效果的方法
2017/04/27 Javascript
原生JavaScript实现的简单省市县三级联动功能示例
2017/05/27 Javascript
vue 中基于html5 drag drap的拖放效果案例分析
2018/11/01 Javascript
详解如何给React-Router添加路由页面切换时的过渡动画
2019/04/25 Javascript
Javascript读取上传文件内容/类型/字节数
2019/04/30 Javascript
js实现图片跟随鼠标移动效果
2019/10/16 Javascript
vue设置导航栏、侧边栏为公共页面的例子
2019/11/01 Javascript
Vue Element校验validate的实例
2020/09/21 Javascript
vue-axios同时请求多个接口 等所有接口全部加载完成再处理操作
2020/11/09 Javascript
Python2.x和3.x下maketrans与translate函数使用上的不同
2015/04/13 Python
浅析Python中的join()方法的使用
2015/05/19 Python
Python基础语言学习笔记总结(精华)
2017/11/14 Python
python2.7实现爬虫网页数据
2018/05/25 Python
python3.7 使用pymssql往sqlserver插入数据的方法
2019/07/08 Python
Python实现TCP探测目标服务路由轨迹的原理与方法详解
2019/09/04 Python
Python使用指定字符长度切分数据示例
2019/12/05 Python
使用pandas的box_plot去除异常值
2019/12/10 Python
Python接口测试结果集实现封装比较
2020/05/01 Python
python中rc1什么意思
2020/06/19 Python
TensorFlow的环境配置与安装教程详解(win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+python3.5.5)
2020/06/22 Python
日本著名的平价时尚女性购物网站:Fifth
2016/08/24 全球购物
慰问信格式
2015/02/14 职场文书
OpenCV-Python实现怀旧滤镜与连环画滤镜
2021/06/09 Python
JS实现页面炫酷的时钟特效示例
2022/08/14 Javascript