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爬虫之urllib2中的两个重要概念:Openers和Handlers
Nov 05 Python
python判断字符串是否是json格式方法分享
Nov 07 Python
详解Django定时任务模块设计与实践
Jul 24 Python
Python爬取豆瓣视频信息代码实例
Nov 16 Python
Numpy之将矩阵拉成向量的实例
Nov 30 Python
Python写出新冠状病毒确诊人数地图的方法
Feb 12 Python
python matplotlib.pyplot.plot()参数用法
Apr 14 Python
Django form表单与请求的生命周期步骤详解
Jun 07 Python
Python连接Impala实现步骤解析
Aug 04 Python
python跨文件使用全局变量的实现
Nov 17 Python
pyx文件 生成pyd 文件用于 cython调用的实现
Mar 04 Python
关于python类SortedList详解
Sep 04 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文件缓存类示例分享
2015/01/30 PHP
php实现通用的信用卡验证类
2015/03/24 PHP
PHP中使用curl入门教程
2015/07/02 PHP
PHP实现下载远程图片保存到本地的方法
2017/06/19 PHP
laravel利用中间件防止未登录用户直接访问后台的方法
2019/09/30 PHP
实现laravel 插入操作日志到数据库的方法
2019/10/11 PHP
JSON 入门指南 想了解json的朋友可以看下
2009/08/26 Javascript
firebug的一个有趣现象介绍
2011/11/30 Javascript
面向对象的Javascript之二(接口实现介绍)
2012/01/27 Javascript
jQuery移动和复制dom节点实用DOM操作案例
2012/12/17 Javascript
Yii-自定义删除确认弹框(zyd)jquery实现代码
2013/03/04 Javascript
jQuery中filter()方法用法实例
2015/01/06 Javascript
EasyUI中实现form表单提交的示例分享
2015/03/01 Javascript
jquery图片倾斜层叠切换特效代码分享
2015/08/27 Javascript
BootStrap daterangepicker 双日历控件
2017/06/02 Javascript
vue.js父子组件通信动态绑定的实例
2018/09/28 Javascript
4个顶级JavaScript高级文本编辑器
2018/10/10 Javascript
浅谈高大上的微信小程序中渲染html内容—技术分享
2018/10/25 Javascript
微信小程序websocket聊天室的实现示例代码
2019/02/12 Javascript
Vue 设置axios请求格式为form-data的操作步骤
2019/10/29 Javascript
JS实现电脑虚拟键盘打字测试
2020/06/24 Javascript
python基础教程之获取本机ip数据包示例
2014/02/10 Python
python去除字符串中的换行符
2017/10/11 Python
Python用imghdr模块识别图片格式实例解析
2018/01/11 Python
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
2018/09/17 Python
Python2和Python3中urllib库中urlencode的使用注意事项
2018/11/26 Python
python使用mitmproxy抓取浏览器请求的方法
2019/07/02 Python
Python常用库Numpy进行矩阵运算详解
2020/07/21 Python
使用phonegap克隆和删除联系人的实现方法
2017/03/31 HTML / CSS
新加坡领先的在线生活方式和杂货购物网站:EAMART
2019/04/02 全球购物
《我的伯父鲁迅先生》教学反思
2014/02/12 职场文书
党的群众路线个人对照检查材料
2014/09/23 职场文书
JavaScript原型链详解
2021/11/07 Javascript
Python使用华为API为图像设置多个锚点标签
2022/04/12 Python
Windows server 2012 R2 安装IIS服务器
2022/04/29 Servers
python开发人人对战的五子棋小游戏
2022/05/02 Python