Django-自定义过滤器和标签

    xiaoxiao2022-07-07  212

    在模板文件中找不到合适的标签或者过滤器是可以自定义的

    一、在生成的应用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>

    四、在html中应用自定义过滤器或标签时,先引入

    {% load extend_fun %}

    最新回复(0)