欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Django自定义模板标签和过滤器

程序员文章站 2022-12-23 13:46:54
1.创建模板库 在某个APP所在目录下新建包 ,然后在其中创建存储标签或者过滤器的的模块,名称随意,例如 。 在这个模块中编写相关代码。 注意: 所在APP应该在配置文件中进行配置。 2.定义过滤器 过滤器是一个函数,第一个参数是被处理的值,之后,可以有任意个参数,作为过滤器参数。 from dja ......

1.创建模板库

在某个app所在目录下新建包templatetags,然后在其中创建存储标签或者过滤器的的模块,名称随意,例如myfilters.py

在这个模块中编写相关代码。

注意:templatetags所在app应该在配置文件中进行配置。

2.定义过滤器

过滤器是一个函数,第一个参数是被处理的值,之后,可以有任意个参数,作为过滤器参数。

from django import template
from django.template.defaultfilters import stringfilter

register=template.library()

# 去除指定字符串
@register.filter(name='mycut')
@stringfilter
def 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>
    <ul>
    {% for post in latest_posts %}
    <li>
        <a href="{% url 'blog:post_detail' post_id=post.id %}">{{ post.title }}</a>
    </li>
    {% endfor %}
    </ul>

4.使用

使用自定义的标签或过滤器之前,在模板文件中,需要使用 {% load 模块名称 %} 加载自定义的标签和过滤器。

之后,就可以向使用django自带的标签一样使用了。

注意:即使当前模板继承的基模板中已经load了自定义标签或过滤器所在的模块,在当前模板中,依然需要再次load。