自定义过滤器

自定义模板标签和过滤器必须位于 Django 的某个应用中。这个应用应该包含一个名为 templatetags 的文件夹,和 models.py、views.py 等文件处于同一级别目录下。

本例中,我们创建一个名为 myApp 的应用,在该应用内,创建一个名为 templatetags 的文件夹,这里可能需要你创建 __init__.py 文件以使得该目录可以作为 Python 的包。

现在我们在 templatetags 文件夹下创建一个 myfilter.py 文件,我们自定义的过滤器在这里编写。

编辑 myfilter.py 文件:

from django import template

register = template.Library()

# 自定义的过滤器
def add_something(value):
    value = value + '新增内容'
    return value

# 注册自定义的过滤器
register.filter('add_something', add_something)

现在过滤器 add_something 能够在模板里使用了。

编写 views.py

from django.shortcuts import render

def test(request):
    context = {}
    my_content = '12345'
    context['my_content'] = my_content

    return render(request, 'test.html', context)

编写 html 文件,记住,要使用 {% load myfilter %} 标签加载我们自定义的过滤器:


{% load myfilter %} 



    test


    {{ my_content|add_something }}


网页输出内容为:

12345新增内容

自定义过滤器生效。




编写带参数的过滤器

编辑 myfilter.py 文件:

from django import template

register = template.Library()

# 自定义的过滤器
def add_something(value, arg):
    value = value + str(arg)
    return value

# 注册自定义的过滤器
register.filter('add_something', add_something)

编写 html 文件:


{% load myfilter %} 



    test


    {{ my_content|add_something:'abc' }}


网页输出为:

12345abc

编写带参数的过滤器生效。




注册自定义过滤器

除了上文提到的方法外,还能用装饰器来注册:

from django import template

register = template.Library()

# 自定义的过滤器并注册
@register.filter(name='add_something')
def add_something(value, arg):
    value = value + str(arg)
    return value

你可能感兴趣的:(自定义过滤器)