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中请使用isinstance()判断变量类型
Aug 25 Python
Python标准库之多进程(multiprocessing包)介绍
Nov 25 Python
Python数据操作方法封装类实例
Jun 23 Python
Python字符串格式化的方法(两种)
Sep 19 Python
pandas 将list切分后存入DataFrame中的实例
Jul 03 Python
详解python配置虚拟环境
Apr 08 Python
python栈的基本定义与使用方法示例【初始化、赋值、入栈、出栈等】
Oct 24 Python
python flask中动态URL规则详解
Nov 22 Python
python3正则模块re的使用方法详解
Feb 11 Python
pytorch 使用加载训练好的模型做inference
Feb 20 Python
Django操作session 的方法
Mar 09 Python
keras 两种训练模型方式详解fit和fit_generator(节省内存)
Jul 03 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
使用Apache的rewrite技术
2006/06/22 PHP
codeigniter使用技巧批量插入数据实例方法分享
2013/12/31 PHP
PHP生成随机密码4种方法及性能对比
2020/12/11 PHP
查询绑定数据岛的表格中的文本并修改显示方式的js代码
2009/12/15 Javascript
JQuery 返回布尔值Is()条件判断方法代码
2012/05/14 Javascript
jquery插件开发之实现google+圈子选择功能
2014/03/10 Javascript
javaScript实现可缩放的显示区效果代码
2015/10/26 Javascript
js性能优化技巧
2015/11/29 Javascript
AngularJS实现Model缓存的方式
2016/02/03 Javascript
基于JS实现移动端访问PC端页面时跳转到对应的移动端网页
2020/12/24 Javascript
解析微信JS-SDK配置授权,实现分享接口
2016/12/09 Javascript
JSONP基础知识详解
2017/03/19 Javascript
vue实现登录后页面跳转到之前页面
2018/01/07 Javascript
Vue商品控件与购物车联动效果的实例代码
2019/07/21 Javascript
JavaScript实现拖拽功能
2020/02/11 Javascript
详解Vue的异步更新实现原理
2020/12/22 Vue.js
[59:08]Ti4 冒泡赛第二天 NEWBEE vs Titan 2
2014/07/15 DOTA
python中的__init__ 、__new__、__call__小结
2014/04/25 Python
Python字符串处理函数简明总结
2015/04/13 Python
python操作mongodb根据_id查询数据的实现方法
2015/05/20 Python
基于Django静态资源部署404的解决方法
2019/07/28 Python
Python日志:自定义输出字段 json格式输出方式
2020/04/27 Python
Python3爬虫里关于代理的设置总结
2020/07/30 Python
html5理解head_动力节点Java学院整理
2017/07/13 HTML / CSS
如果NULL和0作为空指针常数是等价的,那我到底该用哪一个
2014/09/16 面试题
opencv实现图像平移效果
2021/03/24 Python
国际政治个人自荐信范文
2013/11/26 职场文书
自我评价格式
2014/01/06 职场文书
新学期班主任寄语
2014/01/18 职场文书
国培教师自我鉴定
2014/02/12 职场文书
校园活动宣传方案
2014/03/28 职场文书
《沉香救母》教学反思
2014/04/19 职场文书
企业精神口号
2014/06/11 职场文书
红色影片观后感
2015/06/18 职场文书
javascript拖曳互换div的位置实现示例
2021/06/28 Javascript
Python与C++中梯度方向直方图的实现
2022/03/17 Python