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中的greenlet包实现并发编程的入门教程
Apr 16 Python
python验证码识别的示例代码
Sep 21 Python
动态规划之矩阵连乘问题Python实现方法
Nov 27 Python
Python实现简单网页图片抓取完整代码实例
Dec 15 Python
windows 下python+numpy安装实用教程
Dec 23 Python
python 2.7 检测一个网页是否能正常访问的方法
Dec 26 Python
浅谈PyQt5中异步刷新UI和Python多线程总结
Dec 13 Python
python实现按关键字筛选日志文件
Dec 24 Python
Selenium启动Chrome时配置选项详解
Mar 18 Python
通过Python实现一个简单的html页面
May 16 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
Dec 13 Python
完美处理python与anaconda环境变量的冲突问题
Apr 07 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分页时出现的Fatal error的解决方法
2011/04/18 PHP
php图片加水印原理(超简单的实例代码)
2013/01/18 PHP
php生成随机颜色的方法
2014/11/13 PHP
PHP中STDCLASS用法实例分析
2016/11/11 PHP
Yii框架Session与Cookie使用方法示例
2019/10/14 PHP
jQuery避免$符和其他JS库冲突的方法对比
2014/02/20 Javascript
Bootstrap轮播插件使用代码
2016/10/11 Javascript
使用jQuery,Angular实现登录界面验证码详解
2017/04/27 jQuery
详解Vue 非父子组件通信方法(非Vuex)
2017/05/24 Javascript
原生JS实现图片懒加载(lazyload)实例
2017/06/13 Javascript
canvas+gif.js打造自己的数字雨头像的示例代码
2017/10/26 Javascript
浅谈Node.js CVE-2017-14849 漏洞分析(详细步骤)
2017/11/10 Javascript
Vue修改mint-ui默认样式的方法
2018/02/03 Javascript
js实现随机8位验证码
2020/07/24 Javascript
js将URL网址转为16进制加密与解密函数
2020/03/04 Javascript
Vue.js桌面端自定义滚动条组件之美化滚动条VScroll
2020/12/01 Vue.js
Python学习笔记(二)基础语法
2014/06/06 Python
Python3基础之基本运算符概述
2014/08/13 Python
numpy.ndarray 交换多维数组(矩阵)的行/列方法
2018/08/02 Python
使用Django开发简单接口实现文章增删改查
2019/05/09 Python
python conda操作方法
2019/09/11 Python
python图片剪裁代码(图片按四个点坐标剪裁)
2020/03/10 Python
Python tempfile模块生成临时文件和临时目录
2020/09/30 Python
如何用tempfile库创建python进程中的临时文件
2021/01/28 Python
一款html5 canvas实现的图片玻璃碎片特效
2014/09/11 HTML / CSS
西班牙第一的网上药房:PromoFarma.com
2017/04/17 全球购物
瑞士网球商店:Tennis-Point
2020/03/12 全球购物
土木工程应届生求职信
2013/10/31 职场文书
环境科学专业个人求职信
2013/12/15 职场文书
领导证婚人证婚词
2014/01/13 职场文书
文明之星事迹材料
2014/05/09 职场文书
计算机应用应届生求职信
2014/07/12 职场文书
民主生活会对照检查材料(统计局)
2014/09/21 职场文书
地道战观后感
2015/06/04 职场文书
销售口号霸气押韵
2015/12/24 职场文书
中国式结婚:司仪主持词(范文)
2019/07/25 职场文书