自定义 filter 和 simple_tag
在 App 中创建 templatetags 模块 (必须的)
创建任意. py 文件, 如: my_tags.py
templatetags
_init_.py
my_tag.py
- from django import template
- from django.utils.safestring import mark_safe
- register = template.Library() #register 的名字是固定的, 不可改变
- @register.filter
- def filter_multi(v1,v2):
- return v1 * v2
- @register.simple_tag
- def simple_tag_multi(v1,v2):
- return v1 * v2
- @register.simple_tag
- def my_input(id,arg):
- result = "<input type='text'id='%s'class='%s'/>" %(id,arg,)
- return mark_safe(result)
- View Code
在使用自定义 simple_tag 和 filter 的 html 文件中导入之前创建的 my_tags.py :{% load my_tags %}
- @register.simple_tag
- def my_add100(v1):
- return v1+100
- @register.filter
- def my_add1000(v1):
- return v1+1000
- -------------------------------.HTML
- {% load xxx.py %} #首行
- <h1>{% my_add100 188 %}</h1>
- <h1>{{ 888|my_add1000 }}</h1>
结果:
288
1888
在 settings 中的 INSTALLED_APPS 配置当前 App, 不然 django 无法找到自定义的 simple_tag.
注意: filter 可以用在 if 等语句后, simple_tag 不可以
filter 的参数不能超过两个
来源: http://www.bubuko.com/infodetail-2915895.html