Django 自定义tag 和 filter
自定义tag 可以传递多个值,自定义filter最多值可以传递两个值
自定义filter 可以放在{% if %} 中,自定义tag 不可以
1.在 app 下新建一个package名字叫templatetags
2.在templatetags下创建一个python 文件
3. python中是自定义的代码
from django import template from django.utils.safestring import mark_safe #register 是固定的变量名,不能改变 register = template.Library() # 自定义tag 和 filter的不通之处只在于: # tag使用 @register.simple_tag 装饰器 # filter使用 @register.filter 装饰器 @register.simple_tag def myAdd(n): return n+200 @register.simple_tag def myAdd2(n1,n2,n3): return n1+200+n2+n3 @register.filter def myAddf(n): return n+100 @register.filter def myAddf2(n1,n2): return n1+100+n2
4. 在HTML中使用自定义的tag 和filter
{% load myTag %} <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>t8</title> </head> <body> <h1>template</h1> {# 在HTML中使用{% load myTag %} 来引入自定义的文件#} {#调用自定义tag#} {% myAdd num %} {% myAdd2 num 100 20 %} {# 调用自定义filter#} {{ num | myAddf}} {# 向自定义filter中传递两个参数#} {{ num | myAddf2:100}} </body> </html>
if 中调用自定义filter
如果
num+30 大于30 输出successful
{% if num|myAddf2:30 > 30 %} <p>successful</p> {% endif %}
posted on 2018-07-16 20:33 gaizhongfeng 阅读(323) 评论(0) 编辑 收藏 举报