filter 的用法:
- # 先引入 template
- from django import template
- # 声明 register, 名字只能是 register
- register = template.Library()
- # 带名字的装饰器, 调用的时候用起的名字 如 dsb
- @register.filter(name='dsb')
- def add_sb(value, arg):
- return "{}_{}abc".format(value, arg)
- @register.filter
- def add_sb(value, arg):
- return "{}_{}_abc".format(value, arg)
自定义 simpletag 和自定义 inclusion_tag
1. 在 app 下创建一个名叫 templatetags 的 python 包
2. 在 templatetags 里建一个 py 文件
simpletag 的用法:
和自定义 filter 类似, 只不过接收更灵活的参数.
定义注册 simple tag
- @register.simple_tag
- def join_str(arg1, arg2, arg3,*args,**kwargs):
- print(args) #('tian', 'shan', 'tong', 'lao')
- print(kwargs) #{'key1': 'menglang', 'key2': 'menggu'}
- #{% load mytags %}
- # {% join_str 'xiaofeng' 'duanyu' 'xuzhu' 'tian' 'shan' 'tong' 'lao' key1='menglang' key2='menggu' %}
- return '_'.join([arg1, arg2, arg3])+'*'.join(args) #xiaofeng_duanyu_xuzhutian*shan*tong*lao
inclusion_tag 的用法: 多用于返回 html 代码片段
- @register.inclusion_tag('pagination.html')
- def pagination(total, current):
- return {'total': range(1, total + 1), 'current': current}
Django- filter 和 simpletag,inclusion_tag 的用法
来源: http://www.bubuko.com/infodetail-2763952.html