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中ConfigParse模块的用法
Sep 29 Python
Python的面向对象编程方式学习笔记
Jul 12 Python
Python使用文件锁实现进程间同步功能【基于fcntl模块】
Oct 16 Python
python操作mysql代码总结
Jun 01 Python
python3 实现一行输入,空格隔开的示例
Nov 14 Python
python3射线法判断点是否在多边形内
Jun 28 Python
Python下应用opencv 实现人脸检测功能
Oct 24 Python
python 爬取疫情数据的源码
Feb 09 Python
Python 操作 MySQL数据库
Sep 18 Python
Django如何实现防止XSS攻击
Oct 13 Python
Python实现京东抢秒杀功能
Jan 25 Python
pytorch 如何使用batch训练lstm网络
May 28 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中使用XML
2006/10/09 PHP
一个ORACLE分页程序,挺实用的.
2006/10/09 PHP
浅析PHP中call user func()函数及如何使用call user func调用自定义函数
2015/11/05 PHP
PHP获取ttf格式文件字体名的方法示例
2019/03/06 PHP
javascript实现动态增加删除表格行(兼容IE/FF)
2007/04/02 Javascript
JQuery 将元素显示在屏幕的中央的代码
2010/02/27 Javascript
javascript 子窗体父窗体相互传值方法
2010/05/31 Javascript
JQuery FlexiGrid的asp.net完美解决方案 dotNetFlexGrid-.Net原生的异步表格控件
2010/09/12 Javascript
Javascript玩转继承(二)
2014/05/08 Javascript
jquery判断浏览器后退时候弹出消息的方法
2014/08/11 Javascript
5个书写JavaScript代码的坏习惯,看看你中枪了没?
2014/11/06 Javascript
流量统计器如何鉴别C#:WebBrowser中伪造referer
2015/01/07 Javascript
JavaScript中用toString()方法返回时间为字符串
2015/06/12 Javascript
跟我学习javascript的var预解析与函数声明提升
2015/11/16 Javascript
jQuery插件EasyUI设置datagrid的checkbox为禁用状态的方法
2016/08/05 Javascript
easyui取消表单实时验证,提交时统一验证的简单实例
2016/11/07 Javascript
JavaScript实现经典排序算法之冒泡排序
2016/12/28 Javascript
JSON与js对象序列化实例详解
2017/03/16 Javascript
Vue实现一个返回顶部backToTop组件
2017/07/25 Javascript
angular2中使用第三方js库的实例
2018/02/26 Javascript
Vuejs2 + Webpack框架里,模拟下载的实例讲解
2018/09/05 Javascript
JavaScript实现的开关灯泡点击切换特效示例
2019/07/08 Javascript
js实现简单的点名器随机色实例代码
2020/09/20 Javascript
详解Python迭代和迭代器
2016/03/28 Python
在python中以相同顺序shuffle两个list的方法
2018/12/13 Python
python实现本地批量ping多个IP的方法示例
2019/08/07 Python
python使用 request 发送表单数据操作示例
2019/09/25 Python
Tensorflow进行多维矩阵的拆分与拼接实例
2020/02/07 Python
浅谈python 调用open()打开文件时路径出错的原因
2020/06/05 Python
金融行业务员的自我评价
2013/12/13 职场文书
小学生操行评语
2014/04/22 职场文书
机关保密承诺书
2014/06/03 职场文书
股东大会通知
2015/04/24 职场文书
2015年妇女工作总结
2015/05/14 职场文书
2016年“六一儿童节”校园广播稿
2015/12/17 职场文书
MySQL分区表实现按月份归类
2021/11/01 MySQL