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中的__new__与__init__魔术方法理解笔记
Nov 08 Python
Python 多核并行计算的示例代码
Nov 07 Python
Python3.6.2调用ffmpeg的方法
Jan 10 Python
Python数据可视化教程之Matplotlib实现各种图表实例
Jan 13 Python
Django中使用CORS实现跨域请求过程解析
Aug 05 Python
python按行读取文件并找出其中指定字符串
Aug 08 Python
使用 pytorch 创建神经网络拟合sin函数的实现
Feb 24 Python
python 实现读取csv数据,分类求和 再写进 csv
May 18 Python
python安装后的目录在哪里
Jun 21 Python
python接口自动化之ConfigParser配置文件的使用详解
Aug 03 Python
通俗讲解python 装饰器
Sep 07 Python
Python3.10的一些新特性原理分析
Sep 15 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
基于Swoole实现PHP与websocket聊天室
2016/08/03 PHP
Laravel第三方包报class not found的解决方法
2019/10/13 PHP
JS location几个方法小姐
2008/07/09 Javascript
使用jQuery实现dropdownlist的联动效果(sharepoint 2007)
2011/03/30 Javascript
Jquery显示、隐藏元素以及添加删除样式
2013/08/09 Javascript
JavaScript中window.showModalDialog()用法详解
2014/12/18 Javascript
javascript数组去重的六种方法汇总
2015/08/16 Javascript
基于JavaScript实现跳转提示页面
2016/09/24 Javascript
jQuery ajax的功能实现方法详解
2017/01/06 Javascript
JavaScript获取select中text值的方法
2017/02/13 Javascript
Vue组件通信实践记录(推荐)
2017/08/15 Javascript
Vue使用vue-area-linkage实现地址三级联动效果的示例
2018/06/27 Javascript
如何实现一个webpack模块解析器
2018/10/24 Javascript
layui给下拉框、按钮状态、时间赋初始值的方法
2019/09/10 Javascript
vue结合el-upload实现腾讯云视频上传功能
2020/07/01 Javascript
如何实现小程序与小程序之间的跳转
2020/11/04 Javascript
Nest.js环境变量配置与序列化详解
2021/02/21 Javascript
[01:19:34]2014 DOTA2国际邀请赛中国区预选赛 New Element VS Dream time
2014/05/22 DOTA
[01:32:10]NAVI vs VG Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
Python中的装饰器用法详解
2015/01/14 Python
用Python的线程来解决生产者消费问题的示例
2015/04/02 Python
使用python遍历指定城市的一周气温
2017/03/31 Python
Django ORM filter() 的运用详解
2020/05/14 Python
4款Python 类型检查工具,你选择哪个呢?
2020/10/30 Python
html5是什么_动力节点Java学院整理
2017/07/07 HTML / CSS
使用canvas压缩图片大小的方法示例
2019/08/02 HTML / CSS
naturalizer加拿大官网:美国娜然女鞋
2017/04/04 全球购物
泰国网上购物:Shopee泰国
2018/09/14 全球购物
办公室前台岗位职责范本
2013/12/10 职场文书
2014国庆节幼儿园亲子活动方案
2014/09/16 职场文书
2014年人事专员工作总结
2014/11/19 职场文书
店长岗位职责
2015/02/11 职场文书
员工福利申请报告
2015/05/15 职场文书
vue elementUI批量上传文件
2022/04/26 Vue.js
Meta增速拉垮,元宇宙难当重任
2022/04/29 数码科技