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 相关文章推荐
Mac下Supervisor进程监控管理工具的安装与配置
Dec 16 Python
使用Python的Flask框架实现视频的流媒体传输
Mar 31 Python
Python中用format函数格式化字符串的用法
Apr 08 Python
python+matplotlib绘制3D条形图实例代码
Jan 17 Python
详解Python之unittest单元测试代码
Jan 24 Python
漂亮的Django Markdown富文本app插件的实现
Jan 02 Python
python实现给微信指定好友定时发送消息
Apr 29 Python
使用Python打造一款间谍程序的流程分析
Feb 21 Python
Python实现自动打开电脑应用的示例代码
Apr 17 Python
Python 中如何写注释
Aug 28 Python
如何通过安装HomeBrew来安装Python3
Dec 23 Python
一起来学习Python的元组和列表
Mar 13 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
超人钢铁侠联手合作?美漫作家呼吁DC漫威合作联动以抵抗疫情
2020/04/09 欧美动漫
隐藏X-Space个人空间下方版权方法隐藏X-Space个人空间标题隐藏X-Space个人空间管理版权方法
2007/02/22 PHP
php中将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串
2011/08/23 PHP
在PHP模板引擎smarty生成随机数的方法和math函数详解
2014/04/24 PHP
php实现的css文件背景图片下载器代码
2014/11/11 PHP
thinkphp文件处理类Dir.class.php的用法分析
2014/12/08 PHP
php短信接口代码
2016/05/13 PHP
jquery 学习笔记一
2010/04/07 Javascript
jQuery获取css z-index在各种浏览器中的返回值
2010/09/15 Javascript
解读JavaScript代码 var ie = !-[1,] 最短的IE判定代码
2011/05/28 Javascript
js获取 type=radio 值的方法
2014/05/09 Javascript
简介JavaScript中Math.LOG10E属性的使用
2015/06/14 Javascript
使用JQuery实现的分页插件分享
2015/11/05 Javascript
微信小程序 详解下拉加载与上拉刷新实现方法
2017/01/13 Javascript
cordova入门基础教程及使用中遇到的一些问题总结
2017/11/14 Javascript
react实现点击选中的li高亮的示例代码
2018/05/24 Javascript
超出JavaScript安全整数限制的数字计算BigInt详解
2018/06/24 Javascript
vue实现添加与删除图书功能
2018/10/07 Javascript
python读取浮点数和读取文本文件示例
2014/05/06 Python
Python编写生成验证码的脚本的教程
2015/05/04 Python
python获取局域网占带宽最大3个ip的方法
2015/07/09 Python
解决python多线程报错:AttributeError: Can't pickle local object问题
2020/04/08 Python
Python把图片转化为pdf代码实例
2020/07/28 Python
python反爬虫方法的优缺点分析
2020/11/25 Python
IE10 Error.stack 让脚本调试更加方便快捷
2013/04/22 HTML / CSS
苹果中国官方网站:Apple中国
2016/07/22 全球购物
韩国三星集团旗下时尚品牌官网:SSF SHOP
2016/08/02 全球购物
EJB的角色和三个对象
2015/12/31 面试题
农民工创业典型事迹
2014/01/25 职场文书
会计工作决心书
2014/03/11 职场文书
求职信怎么写范文
2014/05/26 职场文书
志愿者事迹材料
2014/12/26 职场文书
婚礼答谢词范文
2015/09/29 职场文书
《我要的是葫芦》教学反思
2016/02/18 职场文书
Go语言应该什么情况使用指针
2021/07/25 Golang
Linux中文件的基本属性介绍
2022/06/01 Servers