Django 模板过滤器

示例

Django模板系统具有内置的标签过滤器,它们是模板内的功能,用于以特定方式呈现内容。可以使用管道指定多个过滤器,并且过滤器可以具有参数,就像在可变语法中一样。

{{ "MAINROAD 3222"|lower }}    # mainroad 3222
{{ 10|add:15}}                 # 25
{{ "super"|add:"glue" }}       # superglue
{{ "A7"|add:"00" }}            # A700
{{ myDate | date:"D d M Y"}}   # Wed 20 Jul 2016

可用的内置过滤器列表可在https://docs.djangoproject.com/en/dev/ref/templates/builtins/#ref-templates-builtins-filters中找到。

创建自定义过滤器

要添加自己的模板过滤器,请templatetags在您的应用文件夹内创建一个名为的文件夹。然后添加一个__init__.py,然后您的文件将包含过滤器:

#/myapp/templatetags/filters.py
from django import template

register = template.Library()

@register.filter(name='tostring')
def to_string(value):
    return str(value)

要实际使用过滤器,您需要将其加载到模板中:

#templates/mytemplate.html
{% load filters %}
{% if customer_id|tostring = customer %} Welcome back {% endif%}

技巧

尽管过滤器一开始看起来很简单,但它可以做一些漂亮的事情:

{% for x in ""|ljust:"20" %}Hello World!{% endfor %}    # Hello World!Hello World!Hel...    
{{ user.name.split|join:"_" }} ## replaces whitespace with '_'

另请参见模板标签。