django中自定义标签和过滤器
前言
在学习使用django的时候,自己搞了个小网站,期间与到不少问题,有一个比较突出,就是在模板中的DTL语言,很多python自身的方法无法调用,如str.split(), a++等等,经过多方查找资料,发现了django自身就可以进行自定义标签和过滤器
django中自定义标签和过滤器
- 首先在项目的引用应用目录,新建一个templatetags目录(固定名字),然后在目录中新建任意名字的python文件,如mytags.py,和一个 init.py
- 第二步,我们需要在setting.py中注册刚刚新建的templatetags。
- mytags.py 的代码如下
#coding="utf-8"
from django import template
register = template.Library() # register的名字是固定的,不可改变
@register.filter
def add2(x, y): # 这里是简单的加运算
x = x + y
return x
@register.filter
def mSplit(x, y): # 这里是字符串的切割
return x.split(y)
@register.simple_tag 标签
def multitag(x,y,z):
return x*y*z
- 使用自定义标签和过滤器
在要使用标签和过滤器的html模板中,加载tag ,{% load mytags %} 这里的mytags改为你们刚刚在templatetags文件夹中定义py文件的名字
在对应需要使用的时候,直接用 {{ a | mSplit “,” }} 切割字符串,
{{ a | add2 1 }}自身加1
注意:
过滤器: {{ var|filter_name:参数 }} # 参数只能是两个,一个参数是变量var ,一个是参数是后面的那个参数
标签: {% simple_tag 参数1 参数2 … %}