在模板文件中找不到合适的标签或者过滤器是可以自定义的
一、在生成的应用app目录下方创建模块templatetags(新建python package)
二、在templatetags下方新建extend_fun.py
三、在extend_fun.py 内部实现定义过滤器(最多支持一个参数)和标签
- 引入模块
from django import template
from ..models import Post
- 得到Django负责管理标签和过滤器的类
register = template.Library()
# 过滤器使用
@register.filter(name='mylower')
def mylower(value):
# 转小写方法
return value.lower()
@register.filter(name='myslice')
def myslice(value, length):
# 截取文章的前length个字符
return value[:length]
# 例如(在html中)
{{ article.body|myslice:20 }}
# 标签使用
@register.simple_tag(name='getcategorys')
def getcategorys():
return Post.objects.all()
# 例如(在html中)
<ul>
{% getcategorys as categorys %}
{% for category in categorys %}
<li><a href=""> {{ category.title }} <span class="post-count"> {{ category.article_set.count }})</span></a></li>
{% endfor %}
</ul>