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科学画图代码分享
Nov 29 Python
浅谈Python traceback的优雅处理
Aug 31 Python
python实现弹跳小球
May 13 Python
计算机二级python学习教程(2) python语言基本语法元素
May 16 Python
python中while和for的区别总结
Jun 28 Python
python的移位操作实现详解
Aug 21 Python
docker-py 用Python调用Docker接口的方法
Aug 30 Python
Python异常模块traceback用法实例分析
Oct 22 Python
python实现替换word中的关键文字(使用通配符)
Feb 13 Python
python读取多层嵌套文件夹中的文件实例
Feb 27 Python
python 模块导入问题汇总
Feb 01 Python
Python标准库pathlib操作目录和文件
Nov 20 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投票程序源码
2007/03/11 PHP
php 修改zen-cart下单和付款流程以防止漏单
2010/03/08 PHP
PHP APC的安装与使用详解
2013/06/13 PHP
php中文乱码问题的终极解决方案汇总
2017/08/01 PHP
js对数字的格式化使用说明
2011/01/12 Javascript
从零开始学习jQuery (八) 插播:jQuery实施方案
2011/02/23 Javascript
JQuery对class属性的操作实现按钮开关效果
2013/10/11 Javascript
jquery判断小数点两位和自动删除小数两位后的数字
2014/03/19 Javascript
jquery自定义下拉列表示例
2014/04/25 Javascript
jquery 页眉单行信息滚动显示实现思路及代码
2014/06/26 Javascript
手机端页面rem宽度自适应脚本
2015/05/20 Javascript
全国省市二级联动下拉菜单 js版
2016/05/10 Javascript
Node.js复制文件的方法示例
2016/12/29 Javascript
JS中正则表达式全局匹配模式 /g用法详解
2017/04/01 Javascript
聊聊Vue.js的template编译的问题
2017/10/09 Javascript
在element-ui的el-tree组件中用render函数生成el-button的实例代码
2018/11/05 Javascript
[00:48]完美“圣”典2016风云人物:xiao8宣传片
2016/11/30 DOTA
python计数排序和基数排序算法实例
2014/04/25 Python
python实现多线程抓取知乎用户
2016/12/12 Python
Python中的浮点数原理与运算分析
2017/10/12 Python
python timestamp和datetime之间转换详解
2017/12/11 Python
python 对给定可迭代集合统计出现频率,并排序的方法
2018/10/18 Python
python3学生名片管理v2.0版
2018/11/29 Python
Python对excel文档的操作方法详解
2018/12/10 Python
解决Django生产环境无法加载静态文件问题的解决
2019/04/23 Python
Python多线程实现支付模拟请求过程解析
2020/04/21 Python
python获取天气接口给指定微信好友发天气预报
2020/12/28 Python
Shopee菲律宾:在线购买和出售
2019/11/25 全球购物
什么是smarty? Smarty的优点是什么?
2013/08/11 面试题
成龙霸王洗发水广告词
2014/03/14 职场文书
销售岗位职责范本
2014/06/12 职场文书
群众路线班子对照检查材料
2014/09/25 职场文书
说谎欺骗人检讨书300字
2014/11/18 职场文书
初中重阳节活动总结
2015/05/05 职场文书
提升Nginx性能的一些建议
2021/03/31 Servers
python数字类型和占位符详情
2022/03/13 Python