使用自定义simple_tag
在 app01 下面创建 templatetags 文件夹,在创建 my_tag.py 文件,内容如下:
from django import template
from django.utils.safestring import mark_safe
register = template.Library() # register的是固定变量名,不能改变
@register.simple_tag
def my_add100(v1):
return v1 + 100
修改 login.html 文件
...
{% my_add100 4 %}
{% my_add 10 11 12 %}
修改 settings.py 文件
# 添加
'libraries':{
"my_tag":"app01.templatetags.my_tag",
位置如下
运行效果如下:
使用自定义 filter
修改 my_tag.py 文件
from django import template
from django.utils.safestring import mark_safe
register = template.Library() # register的是固定变量名,不能改变
# filter 参数不能超过两个
@register.filter
def my_add100(v1, v2):
return v1 + 100 + v2
# simple_tag 不能用于if 语句
@register.simple_tag
def my_add(v1,v2,v3):
return v1 + v2 + v3
修改 login.html 文件
....
{{ num | my_add100:8 }}
...
修改 views.py 文件
........
def login(req):
if req.method=="POST":
return HttpResponse("ok")
num = 100
return render(req, "login.html", locals())
运行效果如下:
{% if %} 的使用
修改 login.html 文件
......
{% if num|my_add100:34 > 100 %}
<p>大于100</p>
{% elif num|my_add100:34 < 100 %}
<p>小于100</p>
{% else %}
<p>等于100</p>
{% endif %}
总结:
simple_tag : 可以传多个参数, 不能用于 if for 语句
filter : 最多两个参数