模板過濾器

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 找到可用的內建過濾器列表。

建立自定義過濾器

要新增自己的模板過濾器,請在 app 資料夾中建立名為 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 '_' 

有關更多資訊,另請參見模板標記