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 自动安装 Rising 杀毒软件
Apr 24 Python
基于python的Tkinter实现一个简易计算器
Dec 31 Python
python中子类继承父类的__init__方法实例
Dec 15 Python
Python使用base64模块进行二进制数据编码详解
Jan 11 Python
python list转矩阵的实例讲解
Aug 04 Python
python中正则表达式 re.findall 用法
Oct 23 Python
python实现DEM数据的阴影生成的方法
Jul 23 Python
python关于调用函数外的变量实例
Dec 26 Python
Python 读取位于包中的数据文件
Aug 07 Python
基于Python的图像阈值化分割(迭代法)
Nov 20 Python
pandas DataFrame.shift()函数的具体使用
May 24 Python
python内置进制转换函数的操作
Jun 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
phpMyAdmin 安装及问题总结
2009/05/28 PHP
php中http_build_query 的一个问题
2012/03/25 PHP
php实现telnet功能示例
2014/04/08 PHP
php过滤HTML标签、属性等正则表达式汇总
2014/09/22 PHP
CI(CodeIgniter)框架视图中加载视图的方法
2017/03/24 PHP
客户端限制只能上传jpg格式图片的js代码
2010/12/09 Javascript
原生js实现fadein 和 fadeout淡入淡出效果
2014/06/05 Javascript
JQuery实现动态表格点击按钮表格增加一行
2014/08/24 Javascript
javascript格式化日期时间方法汇总
2015/06/19 Javascript
jquery+json实现分页效果
2016/03/07 Javascript
浅析JS获取url中的参数实例代码
2016/06/14 Javascript
JavaScript中点击事件的写法
2016/06/28 Javascript
EasyUI学习之DataGird分页显示数据
2016/12/29 Javascript
Three.js基础部分学习
2017/01/08 Javascript
如何开发出更好的JavaScript模块
2017/12/22 Javascript
nodejs操作mongodb的填删改查模块的制作及引入实例
2018/01/02 NodeJs
在Vue项目中使用d3.js的实例代码
2018/05/01 Javascript
基于vue-cli3和element实现登陆页面
2019/11/13 Javascript
eslint+prettier统一代码风格的实现方法
2020/07/22 Javascript
Antd下拉选择,自动匹配功能的实现
2020/10/24 Javascript
JS实现页面侧边栏效果探究
2021/01/08 Javascript
Django查询数据库的性能优化示例代码
2017/09/24 Python
Python从零开始创建区块链
2018/03/06 Python
详解python中的Turtle函数库
2018/11/19 Python
python pandas写入excel文件的方法示例
2019/06/25 Python
Pytorch中的variable, tensor与numpy相互转化的方法
2019/10/10 Python
python 数据类型强制转换的总结
2021/01/25 Python
HTML5 新表单类型示例代码
2018/03/20 HTML / CSS
TripAdvisor越南:全球领先的旅游网站
2017/09/21 全球购物
装潢设计实习自我鉴定
2013/09/19 职场文书
《维生素c的故事》教学反思
2014/02/18 职场文书
遵纪守法演讲稿
2014/05/23 职场文书
小学生植树节活动总结
2014/07/04 职场文书
2014年乡镇民政工作总结
2014/12/02 职场文书
Angular CLI发布路径的配置项浅析
2021/03/29 Javascript
Win11安全功能升级:内置防网络钓鱼功能
2022/04/08 数码科技