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网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
Jun 09 Python
python用Pygal如何生成漂亮的SVG图像详解
Feb 10 Python
Python 对输入的数字进行排序的方法
Jun 23 Python
使用Python获取并处理IP的类型及格式方法
Nov 01 Python
Apache,wsgi,django 程序部署配置方法详解
Jul 01 Python
python读写csv文件并增加行列的实例代码
Aug 01 Python
使用python制作游戏下载进度条的代码(程序说明见注释)
Oct 24 Python
Python 输出详细的异常信息(traceback)方式
Apr 08 Python
python import 上级目录的导入
Nov 03 Python
PyTorch预训练Bert模型的示例
Nov 17 Python
Python读写锁实现实现代码解析
Nov 28 Python
Python中Permission denied的解决方案
Apr 02 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中curl_setopt函数用法实例分析
2015/04/16 PHP
php编写的抽奖程序中奖概率算法
2015/05/14 PHP
PHP框架Laravel插件Pagination实现自定义分页
2020/04/22 PHP
经典的解除许多网站无法复制文字的绝招
2006/12/31 Javascript
javascript:以前写的xmlhttp池,代码
2008/05/18 Javascript
javaScript中Math()函数注意事项
2015/06/18 Javascript
jQuery实现可高亮显示的二级CSS菜单效果
2015/09/01 Javascript
Hammer.js+轮播原理实现简洁的滑屏功能
2016/02/02 Javascript
如何通过js实现图片预览功能【附实例代码】
2016/03/30 Javascript
jQuery基于排序功能实现上移、下移的方法
2016/11/26 Javascript
利用Ionic2 + angular4实现一个地区选择组件
2017/07/27 Javascript
史上最全JavaScript数组去重的十种方法(推荐)
2017/08/17 Javascript
vue Element-ui input 远程搜索与修改建议显示模版的示例代码
2017/10/19 Javascript
vue编译打包本地查看index文件的方法
2018/02/23 Javascript
angularJs-$http实现百度搜索时的动态下拉框示例
2018/02/27 Javascript
JS和Canvas实现图片的预览压缩和上传功能
2018/03/30 Javascript
解决vue 界面在苹果手机上滑动点击事件等卡顿问题
2018/11/27 Javascript
微信小程序实现判断是分享到群还是个人功能示例
2019/05/03 Javascript
使用watch在微信小程序中实现全局状态共享
2019/06/03 Javascript
[01:11]回顾历届DOTA2国际邀请赛中国区预选赛
2017/06/26 DOTA
Python实现对字符串的加密解密方法示例
2017/04/29 Python
python使用openpyxl库修改excel表格数据方法
2018/05/03 Python
python 寻找list中最大元素对应的索引方法
2018/06/28 Python
Python可迭代对象操作示例
2019/05/07 Python
Python集合操作方法详解
2020/02/09 Python
详解Python的三种拷贝方式
2020/02/11 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
2020/02/12 Python
Python实现验证码识别
2020/06/15 Python
CSS3 实现弹幕的示例代码
2017/08/07 HTML / CSS
Html5获取高德地图定位天气的方法
2019/12/26 HTML / CSS
德国著名廉价网上药店:Shop-Apotheke
2017/07/23 全球购物
2014年科室工作总结
2014/11/20 职场文书
社会实践心得体会范文
2016/01/14 职场文书
详解Mysql 函数调用优化
2021/04/07 MySQL
vue实现书本翻页动画效果实例详解
2022/04/08 Vue.js
Elasticsearch 批量操作
2022/04/19 Python