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使用内存zipfile对象在内存中打包文件示例
Apr 30 Python
python实现根据ip地址反向查找主机名称的方法
Apr 29 Python
python中base64加密解密方法实例分析
May 16 Python
Python 详解基本语法_函数_返回值
Jan 22 Python
基于windows下pip安装python模块时报错总结
Jun 12 Python
pycharm debug功能实现跳到循环末尾的方法
Nov 29 Python
Python3实现的判断回文链表算法示例
Mar 08 Python
Python concurrent.futures模块使用实例
Dec 24 Python
Python3创建Django项目的几种方法(3种)
Jun 03 Python
python接入支付宝的实例操作
Jul 20 Python
Python实现哲学家就餐问题实例代码
Nov 09 Python
Python中tqdm的使用和例子
Sep 23 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
德生BCL3000的电路分析和打磨
2021/03/02 无线电
如何提高MYSQL数据库的查询统计速度 select 索引应用
2007/04/11 PHP
php数组函数序列之array_unique() - 去除数组中重复的元素值
2011/10/29 PHP
PHP获取当前相对于域名目录的方法
2015/06/26 PHP
thinkPHP5.0框架应用请求生命周期分析
2017/03/25 PHP
yii2.0整合阿里云oss上传单个文件的示例
2017/09/19 PHP
javascript实现日期格式转换
2014/12/16 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
2016/07/14 Javascript
jQuery轮播图效果精简版完整示例
2016/09/04 Javascript
jQuery表格的维护和删除操作
2017/02/03 Javascript
js实现彩色条纹滚动条效果
2017/03/15 Javascript
javascript高级模块化require.js的具体使用方法
2017/10/31 Javascript
Angular整合zTree的示例代码
2018/01/24 Javascript
element vue Array数组和Map对象的添加与删除操作
2018/11/14 Javascript
详解使用React.memo()来优化函数组件的性能
2019/03/19 Javascript
使用post方法实现json往返传输数据的方法
2019/03/30 Javascript
Vue实现搜索结果高亮显示关键字
2019/05/28 Javascript
解决layer.confirm快速点击会重复触发事件的问题
2019/09/23 Javascript
JS实现炫酷雪花飘落效果
2020/08/19 Javascript
Python中使用PIL库实现图片高斯模糊实例
2015/02/08 Python
对Python2与Python3中__bool__方法的差异详解
2018/11/01 Python
python3实现在二叉树中找出和为某一值的所有路径(推荐)
2019/12/26 Python
python实现逆滤波与维纳滤波示例
2020/02/26 Python
Keras 中Leaky ReLU等高级激活函数的用法
2020/07/05 Python
使用Python爬取小姐姐图片(beautifulsoup法)
2021/02/11 Python
css3闪亮进度条效果实现思路及代码
2013/04/17 HTML / CSS
Gina Bacconi官网:吉娜贝康尼连衣裙和礼服
2018/04/24 全球购物
Priority Pass机场贵宾室会籍计划:全球超过1200间机场贵宾室
2018/08/26 全球购物
可以在一个PHP文件里面include另外一个PHP文件两次吗
2015/05/22 面试题
校长就职演讲稿
2014/01/06 职场文书
建设幸福中国演讲稿
2014/09/11 职场文书
北京导游词
2015/02/12 职场文书
小班下学期个人总结
2015/02/12 职场文书
2016年国陪研修感言
2015/11/18 职场文书
新手开公司创业注意事项有哪些?
2019/07/29 职场文书
postgresql如何找到表中重复数据的行并删除
2023/05/08 MySQL