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中__call__方法示例分析
Oct 11 Python
Python实现简单状态框架的方法
Mar 19 Python
python 生成器协程运算实例
Sep 04 Python
Python中对象的引用与复制代码示例
Dec 04 Python
Diango + uwsgi + nginx项目部署的全过程(可外网访问)
Apr 22 Python
使用NumPy和pandas对CSV文件进行写操作的实例
Jun 14 Python
pycharm 中mark directory as exclude的用法详解
Feb 14 Python
40行Python代码实现天气预报和每日鸡汤推送功能
Feb 27 Python
Django实现将views.py中的数据传递到前端html页面,并展示
Mar 16 Python
Python变量格式化输出实现原理解析
Aug 06 Python
Python OpenCV快速入门教程
Apr 17 Python
详解MindSpore自定义模型损失函数
Jun 30 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实现图片按比例截取的方法
2017/02/06 PHP
jQuery JSON的解析方式分享
2011/04/05 Javascript
jQuery插件的写法分享
2013/06/12 Javascript
jquery实现checkbox 全选/全不选的通用写法
2014/02/22 Javascript
Extjs 4.x 得到form CheckBox 复选框的值
2014/05/04 Javascript
javascript制作的网页侧边弹出框思路及实现代码
2014/05/21 Javascript
javascript检测移动设备横竖屏
2016/05/21 Javascript
仅一个form表单 js实现注册信息依次填写提交功能
2016/06/12 Javascript
nodejs简单实现操作arduino
2016/09/25 NodeJs
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
2016/10/09 Javascript
javascript实现用户点击数量统计
2016/12/25 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图和饼图的组合图效果示例【附demo源码下载】
2017/03/09 Javascript
Angular实现一个简单的多选复选框的弹出框指令实例
2017/04/25 Javascript
Angular如何引入第三方库的方法详解
2017/07/13 Javascript
利用JS判断客户端类型你应该知道的四种方法
2017/12/22 Javascript
VUE基于NUXT的SSR 服务端渲染
2018/11/30 Javascript
JavaScript中var的重要性实例分析
2019/07/09 Javascript
小程序采集录音并上传到后台
2019/11/22 Javascript
获取Django项目的全部url方法详解
2017/10/26 Python
pycharm下查看python的变量类型和变量内容的方法
2018/06/26 Python
python实现屏保计时器的示例代码
2018/08/08 Python
Django JWT Token RestfulAPI用户认证详解
2019/01/23 Python
通过cmd进入python的实例操作
2019/06/26 Python
python set内置函数的具体使用
2019/07/02 Python
Python解释器及PyCharm工具安装过程
2020/02/26 Python
python程序输出无内容的解决方式
2020/04/09 Python
python脚本定时发送邮件
2020/12/22 Python
优秀员工自荐书范文
2013/12/08 职场文书
一年级班主任感言
2014/03/08 职场文书
合作意向书模板
2014/03/31 职场文书
酒店餐厅2014重阳节活动策划方案
2014/09/16 职场文书
2015年公司后勤管理工作总结
2015/05/13 职场文书
办公室年度工作总结2015
2015/05/21 职场文书
2016年小学中秋节活动总结
2016/04/05 职场文书
python实战之90行代码写个猜数字游戏
2021/04/22 Python
Python实现生活常识解答机器人
2021/06/28 Python