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 05 Python
Python的shutil模块中文件的复制操作函数详解
Jul 05 Python
PyQt5每天必学之像素图控件QPixmap
Apr 19 Python
Python3处理HTTP请求的实例
May 10 Python
使用python画个小猪佩奇的示例代码
Jun 06 Python
selenium+python实现自动化登录的方法
Sep 04 Python
python使用suds调用webservice接口的方法
Jan 03 Python
FFT快速傅里叶变换的python实现过程解析
Oct 21 Python
centos7中安装python3.6.4的教程
Dec 11 Python
python如何实现不可变字典inmutabledict
Jan 08 Python
Python Tkinter Entry和Text的添加与使用详解
Mar 04 Python
Python字节单位转换(将字节转换为K M G T)
Mar 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的webservice的wsdl的XML无法显示问题的解决方法
2014/03/11 PHP
Domino中运用jQuery读取视图内容的方法
2009/10/21 Javascript
jquery.post用法关于type设置问题补充
2014/01/03 Javascript
connect中间件session、cookie的使用方法分享
2014/06/17 Javascript
JS中常用的输出方式(五种)
2016/06/12 Javascript
半个小时学json(json传递示例)
2016/12/25 Javascript
JS基于正则表达式的替换操作(replace)用法示例
2017/04/28 Javascript
vue 怎么创建组件及组件使用方法
2017/07/27 Javascript
node thread.sleep实现示例
2018/06/20 Javascript
跟老齐学Python之关于循环的小伎俩
2014/10/02 Python
Python实现简单登录验证
2016/04/13 Python
浅析Python中else语句块的使用技巧
2016/06/16 Python
详解python3实现的web端json通信协议
2016/12/29 Python
Python简单操作sqlite3的方法示例
2017/03/22 Python
浅谈python import引入不同路径下的模块
2017/07/11 Python
python多线程分块读取文件
2019/08/29 Python
keras 特征图可视化实例(中间层)
2020/01/24 Python
python db类用法说明
2020/07/07 Python
windows10在visual studio2019下配置使用openCV4.3.0
2020/07/14 Python
使用Python+Appuim 清理微信的方法
2021/01/26 Python
全面总结使用CSS实现水平垂直居中效果的方法
2016/03/10 HTML / CSS
HTML5播放实现rtmp流直播
2020/06/16 HTML / CSS
eBay法国购物网站:eBay.fr
2017/10/21 全球购物
Stefania Mode美国:奢华设计师和时尚服装
2018/01/07 全球购物
Book Depository澳大利亚:世界领先的专业在线书店之一
2018/12/27 全球购物
英国奢侈品在线精品店:Hervia
2020/09/03 全球购物
销售员个人求职的自我评价
2014/02/10 职场文书
《画风》教学反思
2014/04/16 职场文书
交警作风整顿剖析材料
2014/10/11 职场文书
群众路线自我剖析范文
2014/11/04 职场文书
2016优秀护士求职自荐信
2016/01/28 职场文书
详解TypeScript中的类型保护
2021/04/29 Javascript
Python爬虫中urllib3与urllib的区别是什么
2021/07/21 Python
Windows11里微软已经将驱动程序安装位置A盘删除
2021/11/21 数码科技
日元符号 ¥
2022/02/17 杂记
Win11远程连接不上怎么办?Win11远程桌面用不了的解决方法
2022/08/05 数码科技