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中异常报错处理方法汇总
Nov 20 Python
Pandas探索之高性能函数eval和query解析
Oct 28 Python
从CentOS安装完成到生成词云python的实例
Dec 01 Python
Python中sort和sorted函数代码解析
Jan 25 Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
Apr 18 Python
python多进程提取处理大量文本的关键词方法
Jun 05 Python
Python opencv实现人眼/人脸识别以及实时打码处理
Apr 29 Python
jupyter notebook 的工作空间设置操作
Apr 20 Python
Pandas对DataFrame单列/多列进行运算(map, apply, transform, agg)
Jun 14 Python
为什么相对PHP黑python的更少
Jun 21 Python
Python同时迭代多个序列的方法
Jul 28 Python
Python和Bash结合在一起的方法
Nov 13 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
操作Oracle的php类
2006/10/09 PHP
PHP获取二叉树镜像的方法
2018/01/17 PHP
IE与FireFox的兼容性问题分析
2007/04/22 Javascript
javascript Excel操作知识点
2009/04/24 Javascript
使用jquery获取网页中图片高度的两种方法
2013/09/26 Javascript
JQuery页面的表格数据的增加与分页的实现
2013/12/10 Javascript
简介可以自动完成UI的AngularJS工具angular-smarty
2015/06/23 Javascript
javascript 中的 delete及delete运算符
2015/11/15 Javascript
javascript实现简易计算器的代码
2016/05/31 Javascript
Bootstrap学习系列之使用 Bootstrap Typeahead 组件实现百度下拉效果
2016/07/07 Javascript
几句话带你理解JS中的this、闭包、原型链
2016/09/26 Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
2017/03/10 Javascript
nodejs连接mysql数据库简单封装示例-mysql模块
2017/04/10 NodeJs
js 获取今天以及过去日期
2017/04/11 Javascript
Vue2.0 实现单选互斥的方法
2018/04/13 Javascript
JS常见DOM节点操作示例【创建 ,插入,删除,复制,查找】
2018/05/14 Javascript
在小程序Canvas中使用measureText的方法示例
2018/10/19 Javascript
微信运维交互机器人的示例代码
2018/11/12 Javascript
Bootstarp在pycharm中的安装及简单的使用方法
2019/04/19 Javascript
vue下载excel的实现代码后台用post方法
2019/05/10 Javascript
vue中使用GraphQL的实例代码
2019/11/04 Javascript
javascript实现的图片预览和上传功能示例【兼容IE 9】
2020/05/01 Javascript
在Vue中使用antv的示例代码
2020/06/29 Javascript
[52:57]2014 DOTA2国际邀请赛中国区预选赛 LGD-CDEC VS HGT
2014/05/21 DOTA
Python 时间操作例子和时间格式化参数小结
2014/04/24 Python
Python两个内置函数 locals 和globals(学习笔记)
2016/08/28 Python
浅谈python日志的配置文件路径问题
2018/04/28 Python
python中列表的切片与修改知识点总结
2019/07/23 Python
多个python文件调用logging模块报错误
2020/02/12 Python
Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)
2020/04/08 Python
解决TensorFlow程序无限制占用GPU的方法
2020/06/30 Python
具有防紫外线功能的高性能钓鱼服装:Hook&Tackle
2018/08/16 全球购物
网络工程师面试(三木通信技术有限公司)
2013/06/05 面试题
教学督导岗位职责
2015/04/10 职场文书
盗窃罪辩护词范文
2015/05/21 职场文书
先进个人主要事迹范文
2015/11/04 职场文书