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字符串的encode与decode研究心得乱码问题解决方法
Mar 23 Python
Python实现把xml或xsl转换为html格式
Apr 08 Python
python中pandas.DataFrame排除特定行方法示例
Mar 12 Python
JSON Web Tokens的实现原理
Apr 02 Python
windows下python连接oracle数据库
Jun 07 Python
Django教程笔记之中间件middleware详解
Aug 01 Python
Python matplotlib的使用并自定义colormap的方法
Dec 13 Python
关于pandas的离散化,面元划分详解
Nov 22 Python
pytorch sampler对数据进行采样的实现
Dec 31 Python
python实现信号时域统计特征提取代码
Feb 26 Python
Pycharm创建python文件自动添加日期作者等信息(步骤详解)
Feb 03 Python
Python3+Appium安装及Appium模拟微信登录方法详解
Feb 16 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绘制饼状图的实现代码
2013/06/07 PHP
PHP的Yii框架的基本使用示例
2015/08/21 PHP
javascript中this指向详解
2016/04/23 Javascript
ng-options和ng-checked在表单中的高级运用(推荐)
2017/01/21 Javascript
Js判断H5上下滑动方向及滑动到顶部和底部判断的示例代码
2017/11/15 Javascript
js推箱子小游戏步骤代码解析
2018/01/10 Javascript
浅谈Vue初学之props的驼峰命名
2018/07/19 Javascript
webpack+vue-cil中proxyTable处理跨域的方法
2018/07/20 Javascript
js限制input只能输入有效的数字(第一个不能是小数点)
2018/09/28 Javascript
小程序实现列表多个批量倒计时
2021/01/29 Javascript
[58:12]Ti4第二日主赛事败者组 LGD vs iG 3
2014/07/21 DOTA
Python 转义字符详细介绍
2017/03/21 Python
Django的分页器实例(paginator)
2017/12/01 Python
Python中pygal绘制雷达图代码分享
2017/12/07 Python
Python3实现的回文数判断及罗马数字转整数算法示例
2019/03/27 Python
python tkinter控件布局项目实例
2019/11/04 Python
使用python 计算百分位数实现数据分箱代码
2020/03/03 Python
python 数据库查询返回list或tuple实例
2020/05/15 Python
django为Form生成的label标签添加class方式
2020/05/20 Python
python获取时间戳的实现示例(10位和13位)
2020/09/23 Python
HomeAway的巴西品牌:Alugue Temporada
2018/04/10 全球购物
sleep()方法和wait()方法的区别是什么
2012/11/17 面试题
大学生找工作推荐信范文
2013/11/28 职场文书
高校教师岗位职责
2014/03/18 职场文书
支部组织生活会方案
2014/06/10 职场文书
校园文化标语
2014/06/18 职场文书
城管执法人员纪律作风整顿思想汇报
2014/09/13 职场文书
学生未请假就回家检讨书
2014/09/22 职场文书
四风问题原因分析及整改措施
2014/10/24 职场文书
学习走群众路线心得体会
2014/11/05 职场文书
学籍证明模板
2015/06/18 职场文书
学校少先队工作总结
2015/08/12 职场文书
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
2021/04/12 Python
Apache Calcite 实现方言转换的代码
2021/04/24 Servers
用Python仅20行代码编写一个简单的端口扫描器
2022/04/08 Python
Go本地测试解耦任务拆解及沟通详解Go本地测试的思路沟通的重要性总结
2022/06/21 Golang