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输出PowerPoint(ppt)文件中全部文字信息的方法
Apr 28 Python
python在不同层级目录import模块的方法
Jan 31 Python
Python实现SSH远程登陆,并执行命令的方法(分享)
May 08 Python
python3实现全角和半角字符转换的方法示例
Sep 21 Python
python实现爬取百度图片的方法示例
Jul 06 Python
在win64上使用bypy进行百度网盘文件上传功能
Jan 02 Python
Windows 下python3.8环境安装教程图文详解
Mar 11 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
Jun 06 Python
keras model.fit 解决validation_spilt=num 的问题
Jun 19 Python
4款Python 类型检查工具,你选择哪个呢?
Oct 30 Python
Python常用断言函数实例汇总
Nov 30 Python
Python Matplotlib库实现画局部图
Nov 17 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 危险函数解释 分析
2009/04/22 PHP
在PHP中检查PHP文件是否有语法错误的方法
2009/12/23 PHP
PHP模糊查询的实现方法(推荐)
2016/09/06 PHP
php reset() 函数指针指向数组中的第一个元素并输出实例代码
2016/11/21 PHP
Laravel监听数据库访问,打印SQL的例子
2019/10/24 PHP
Prototype Object对象 学习
2009/07/12 Javascript
Jquery 插件学习实例1 插件制作说明与tableUI优化
2010/04/02 Javascript
ajax请求乱码的解决方法(中文乱码)
2014/04/10 Javascript
javascript实现博客园页面右下角返回顶部按钮
2015/02/22 Javascript
详解JavaScript中的forEach()方法的使用
2015/06/08 Javascript
bootstrap和jQuery.Gantt的css冲突 如何解决
2016/05/29 Javascript
AngularJs bootstrap搭载前台框架——准备工作
2016/09/01 Javascript
JS实现的五级联动菜单效果完整实例
2017/02/23 Javascript
详解AngularJS ui-sref的简单使用
2017/04/24 Javascript
bootstrap table单元格新增行并编辑
2017/05/19 Javascript
微信浏览器禁止页面下拉查看网址实例详解
2017/06/28 Javascript
js制作简单的音乐播放器的示例代码
2017/08/28 Javascript
详解如何让InstantClick兼容MathJax、百度统计等
2017/09/12 Javascript
angularjs中判断ng-repeat是否迭代完的实例
2018/09/12 Javascript
webpack打包nodejs项目的方法
2018/09/26 NodeJs
vue使用微信扫一扫功能的实现代码
2020/04/11 Javascript
vue接口请求加密实例
2020/08/11 Javascript
[46:28]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
python3简单实现微信爬虫
2015/04/09 Python
关于Python中空格字符串处理的技巧总结
2017/08/10 Python
python实现决策树分类算法
2017/12/21 Python
python环形单链表的约瑟夫问题详解
2018/09/27 Python
利用python求积分的实例
2019/07/03 Python
使用pycharm和pylint检查python代码规范操作
2020/06/09 Python
船舶专业个人求职信范文
2014/01/02 职场文书
森林防火工作方案
2014/02/14 职场文书
最经典的大学生职业生涯规划范文
2014/03/05 职场文书
森林防火宣传标语
2014/06/27 职场文书
办护照工作证明
2014/10/01 职场文书
C站最全Python标准库总结,你想要的都在这里
2021/07/03 Python
python之django路由和视图案例教程
2021/07/26 Python