Django自定义模板标签和过滤器(代码示例)
本篇文章给大家带来的内容是关于Django自定义模板标签和过滤器(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
1、创建模板库
在某个app所在目录下新建包templatetags,然后在其中创建存储标签或者过滤器的的模块,名称随意,例如myfilters.py。
在这个模块中编写相关代码。
注意:templatetags所在APP应该在配置文件中进行配置。
2.定义过滤器
过滤器是一个函数,第一个参数是被处理的值,之后,可以有任意个参数,作为过滤器参数。
from django import templatefrom django.template.defaultfilters import stringfilterregister=template.Library()# 去除指定字符串@register.filter(name='mycut')@stringfilterdef mycut(value,arg): return value.replace(arg,'')# 注册过滤器# register.filter(name='mycut',filter_func=mycut)
3.定义标签
simple_tag
处理数据,并返回具体数据
@register.simple_tag(name='posts_count')def total_posts(): return Post.published.count()
inclusion_tag
处理数据,并返回一个渲染的模板
@register.inclusion_tag('blog/post/latest.html')def show_latest_posts(count=5): latest_posts=Post.published.order_by('-publish')[:5] return { 'latest_posts':latest_posts, }
blog/post/latest.html内容如下:
<strong>最新文章</strong>
4.使用
使用自定义的标签或过滤器之前,在模板文件中,需要使用 {% load 模块名称 %} 加载自定义的标签和过滤器。
之后,就可以向使用Django自带的标签一样使用了。
注意:即使当前模板继承的基模板中已经load了自定义标签或过滤器所在的模块,在当前模板中,依然需要再次load。
【