模板语言(二)
自定义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)
- 在使用自定义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的参数不能超过两个
模板标签
------base.html--------- {% block name%} yyy {% endblock %} ------沿用base.html的模板-------- {% extends "base.html" %} {% block name%} <h1>订单</h1> {% endblock %}