Django 自定义模板语法

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

######################定义标签#####################
<br>
@register.simple_tag
def simple_tag_multi(v1,v2):
    return  v1 * v2
<br>
@register.simple_tag
def my_input(id,arg):
    result = "<input type='text' id='%s' class='%s' />" %(id,arg,)
    return mark_safe(result)

1、在settings中的INSTALLED_APPS配置当前app(即加上当前app的名字,如‘app01’),不然django无法找到自定义的simple_tag.

2、在app中创建templatetags模块(模块名只能是templatetags)

3、创建任意 .py 文件,如:my_tags.py

-------------模板页面.html--------------------
过滤器: {{var|filter_name:参数}} # 参数只能是一个

标签: {% simple_tag 参数1 参数2 ... %} #参数不限


{% load my_tags %}  
      
# num=12
{{ num|filter_multi:2 }} #24   #参数只能有一个
 
{{ num|filter_multi:"[22,333,4444]" }}
 
{% simple_tag_multi 2 5 %}  #参数不限,但不能放在if for语句中
{% simple_tag_multi num 5 %}
{% if num|filter_multi:30 > 100 %}
    {{ num|filter_multi:30 }}
{% endif %}

对比过滤器与自定义标签的使用:
  过滤器函数的参数只能有两个,自定义标签无参数限制
  过滤器可以与逻辑标签共同使用,比如if标签。自定义标签不可以。

posted @ 2018-03-21 17:30  TAMAYURA  阅读(135)  评论(0编辑  收藏  举报