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深入学习之特殊方法与多范式
Aug 31 Python
Python自动化部署工具Fabric的简单上手指南
Apr 19 Python
用Python将IP地址在整型和字符串之间轻松转换
Mar 22 Python
Django 前后台的数据传递的方法
Aug 08 Python
对Python使用mfcc的两种方式详解
Jan 09 Python
Django JWT Token RestfulAPI用户认证详解
Jan 23 Python
python实现在函数中修改变量值的方法
Jul 16 Python
python-OpenCV 实现将数组转换成灰度图和彩图
Jan 09 Python
ansible动态Inventory主机清单配置遇到的坑
Jan 19 Python
TensorFlow Autodiff自动微分详解
Jul 06 Python
PyCharm2020.1.1与Python3.7.7的安装教程图文详解
Aug 07 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
Oct 15 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
DOTA2 1月28日更新:监管系统降临刀塔世界
2021/01/28 DOTA
php 中的str_replace 函数总结
2007/04/27 PHP
php二维数组排序详解
2013/11/06 PHP
php动态生成函数示例
2014/03/21 PHP
Yii 2.0在Grid中格式化时间方法示例
2017/06/06 PHP
javascript验证身份证完全方法具体实现
2013/11/18 Javascript
不提示直接关闭网页窗口的JS示例代码
2013/12/17 Javascript
Javascript中的五种数据类型详解
2014/12/26 Javascript
详解React native全局变量的使用(跨组件的通信)
2017/09/07 Javascript
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
2017/10/25 Javascript
vue路由传参三种基本方式详解
2019/12/09 Javascript
Angular短信模板校验代码
2020/09/23 Javascript
[00:19]CN DOTA NEVER DIE!VG夺冠rOtK接受采访
2019/12/23 DOTA
Python标准库之随机数 (math包、random包)介绍
2014/11/25 Python
python读取TXT到数组及列表去重后按原来顺序排序的方法
2015/06/26 Python
Python遍历目录中的所有文件的方法
2016/07/08 Python
Python中.py文件打包成exe可执行文件详解
2017/03/22 Python
selenium python浏览器多窗口处理代码示例
2018/01/15 Python
Python编程实现的简单神经网络算法示例
2018/01/26 Python
Python基于递归实现电话号码映射功能示例
2018/04/13 Python
python实现beta分布概率密度函数的方法
2019/07/08 Python
python模拟键盘输入 切换键盘布局过程解析
2019/08/15 Python
python 使用pygame工具包实现贪吃蛇游戏(多彩版)
2019/10/30 Python
Python2和Python3中@abstractmethod使用方法
2020/02/04 Python
Python3将ipa包中的文件按大小排序
2020/04/17 Python
用python绘制樱花树
2020/10/09 Python
极度干燥澳大利亚官方网站:Superdry澳大利亚
2019/03/28 全球购物
世界上最伟大的马产品:Equiderma
2020/01/07 全球购物
ECHT官方网站:男女健身服
2020/02/14 全球购物
建筑工程自我鉴定
2013/10/18 职场文书
教师的实习鉴定
2013/12/15 职场文书
图书室管理制度
2014/01/19 职场文书
班长竞选演讲稿
2014/04/24 职场文书
群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
高中班主任培训心得体会
2016/01/07 职场文书
python自然语言处理之字典树知识总结
2021/04/25 Python