自定义过滤器

自定义模板标签和过滤器必须位于 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 %} 标签加载我们自定义的过滤器:

<!DOCTYPE html>
{% load myfilter %} 

<html>
<head>
    <title>test</title>
</head>
<body>
    {{ my_content|add_something }}
</body>
</html>

网页输出内容为:

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 文件:

<!DOCTYPE html>
{% load myfilter %} 

<html>
<head>
    <title>test</title>
</head>
<body>
    {{ my_content|add_something:'abc' }}
</body>
</html>

网页输出为:

12345abc

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




注册自定义过滤器

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

from django import template

register = template.Library()

# 自定义的过滤器并注册
@register.filter(name='add_something')
def add_something(value, arg):
    value = value + str(arg)
    return value
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容