Python的Django框架中自定义模版标签的示例


Posted in Python onJuly 20, 2015

为了自定义一个模板标签,你需要告诉Django当遇到你的标签时怎样进行这个过程。

当Django编译一个模板时,它将原始模板分成一个个 节点 。每个节点都是 django.template.Node 的一个实例,并且具备 render() 方法。 于是,一个已编译的模板就是 节点 对象的一个列表。 例如,看看这个模板:

Hello, {{ person.name }}.

{% ifequal name.birthday today %}
  Happy birthday!
{% else %}
  Be sure to come back on your birthday
  for a splendid surprise message.
{% endifequal %}

被编译的模板表现为节点列表的形式:

  •     文本节点: "Hello, "
  •     变量节点: person.name
  •     文本节点: ".\n\n"
  •     IfEqual节点: name.birthday和today

当你调用一个已编译模板的 render() 方法时,模板就会用给定的context来调用每个在它的节点列表上的所有节点的 render() 方法。 这些渲染的结果合并起来,形成了模板的输出。 因此,要自定义模板标签,你需要指明原始模板标签如何转换成节点(编译函数)和节点的render()方法完成的功能 。

在下面的章节中,我们将详细解说写一个自定义标签时的所有步骤。

Python 相关文章推荐
神经网络python源码分享
Dec 15 Python
python使用sqlite3时游标使用方法
Mar 13 Python
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
Sep 17 Python
Python 实现某个功能每隔一段时间被执行一次的功能方法
Oct 14 Python
python调用matlab的m自定义函数方法
Feb 18 Python
Python读写文件基础知识点
Jun 10 Python
Python数据类型之列表和元组的方法实例详解
Jul 08 Python
使用Python轻松完成垃圾分类(基于图像识别)
Jul 09 Python
Python中zip()函数的简单用法举例
Sep 02 Python
python子线程退出及线程退出控制的代码
Oct 16 Python
Django 简单实现分页与搜索功能的示例代码
Nov 07 Python
Python操作PostgreSql数据库的方法(基本的增删改查)
Dec 29 Python
详解在Python的Django框架中创建模板库的方法
Jul 20 #Python
简单介绍Python的Django框架加载模版的方式
Jul 20 #Python
在Django框架中编写Context处理器的方法
Jul 20 #Python
详解Django框架中用context来解析模板的方法
Jul 20 #Python
Django中URLconf和include()的协同工作方法
Jul 20 #Python
在Python的Django框架中包装视图函数
Jul 20 #Python
Django中URL视图函数的一些高级概念介绍
Jul 20 #Python
You might like
PHP 数组遍历方法大全(foreach,list,each)
2010/06/30 PHP
PHP运行SVN命令显示某用户的文件更新记录的代码
2014/01/03 PHP
PHP实现生成唯一编号(36进制的不重复编号)
2014/07/01 PHP
php检测apache mod_rewrite模块是否安装的方法
2015/03/14 PHP
PHP中__set()实例用法和基础讲解
2019/07/23 PHP
用javascript实现计算两个日期的间隔天数
2007/08/14 Javascript
JavaScript 事件系统
2010/07/22 Javascript
2012年开发人员的16款新鲜的jquery插件体验分享
2012/12/28 Javascript
基于jQuery实现select下拉选择可输入附源码下载
2016/02/03 Javascript
JS实现的自动打字效果示例
2017/03/10 Javascript
vue2.0+vuex+localStorage代办事项应用实现详解
2018/05/31 Javascript
bootstrap实现嵌套模态框的实例代码
2020/01/10 Javascript
浅谈Vue2.4.0 $attrs与inheritAttrs的具体使用
2020/03/08 Javascript
JS简易计算器实例讲解
2020/06/30 Javascript
Python按行读取文件的实现方法【小文件和大文件读取】
2016/09/19 Python
Apache如何部署django项目
2017/05/21 Python
python面向对象多线程爬虫爬取搜狐页面的实例代码
2018/05/31 Python
tensorflow实现加载mnist数据集
2018/09/08 Python
对Python3.x版本print函数左右对齐详解
2018/12/22 Python
Python的bit_length函数来二进制的位数方法
2019/08/27 Python
python实现文件的分割与合并
2019/08/29 Python
解析python实现Lasso回归
2019/09/11 Python
python+opencv实现车牌定位功能(实例代码)
2019/12/24 Python
Python中url标签使用知识点总结
2020/01/16 Python
利用CSS3动画实现圆圈由小变大向外扩散的效果实例
2018/09/10 HTML / CSS
video结合canvas实现视频在线截图功能
2018/06/25 HTML / CSS
英国DIY汽车维修配件网站:DIY Car Service Parts
2019/08/30 全球购物
综合办公室主任职责
2013/12/16 职场文书
写自荐信三大法宝
2014/01/24 职场文书
安全责任书范文
2014/03/12 职场文书
医学专业大学生求职信
2014/07/12 职场文书
2014年政风行风工作总结
2014/11/22 职场文书
教师节慰问信
2015/02/15 职场文书
酒吧七夕情人节宣传语
2015/11/24 职场文书
2016元旦主持人经典开场白台词
2015/12/03 职场文书
求职自我评价参考范文
2019/05/16 职场文书