Python的Django框架中自定义模版标签的示例

yipeiwu_com6年前Python基础

为了自定义一个模板标签,你需要告诉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图像识别算法

python实现识别手写数字 python图像识别算法

写在前面 这一段的内容可以说是最难的一部分之一了,因为是识别图像,所以涉及到的算法会相比之前的来说比较困难,所以我尽量会讲得清楚一点。 而且因为在编写的过程中,把前面的一些逻辑也修改了一...

Python运维开发之psutil库的使用详解

介绍 psutil能够轻松实现获取系统运行的进程和系统利用率。 导入模块 import psutils 获取系统性能信息 CPU信息 使用cpu_times()方法获取CP...

python解决字典中的值是列表问题的方法

问题:查找一些英文词在哪些小句中出现了,当然是用python来实现,当然是用字典,但是怎么让一个key对应一个 类型为列表的value,直接用列表的append()是不行的,比如dic[...

画pytorch模型图,以及参数计算的方法

画pytorch模型图,以及参数计算的方法

刚入pytorch的坑,代码还没看太懂。之前用keras用习惯了,第一次使用pytorch还有些不适应,希望广大老司机多多指教。 首先说说,我们如何可视化模型。在keras中就一句话,k...

Python 普通最小二乘法(OLS)进行多项式拟合的方法

Python 普通最小二乘法(OLS)进行多项式拟合的方法

多元函数拟合。如 电视机和收音机价格多销售额的影响,此时自变量有两个。 python 解法: import numpy as np import pandas as pd #impo...