2017年11月4日 星期六

Django - Filter & 自製Tag 筆記

此筆記將紀錄如何使用Filter

{{ value | filter : "params" }}
並非全部的filter都用參數

每個單字以大寫開頭
{{ text | title }}

日期格式
{{ mydate | data : "Y-m-d"  }}

大寫text
{{ text | upper }}

小寫
{{ text | lower }}

數字加法,number變數必須要是數字型別
{{ number | add:"2" }}

顯示前n個字元
{{ text | truncatewords:80 }} # 前80


自製Filter


新增templatetags資料夾於app底下,注意不是project而是app


接著於templatetags新增__init__.py 和 tags.py,內容如下:

from django import template

register = template.Library()

def cut(value, arg):
return value.replace(arg,'')

register.filter('cut', cut) # 註冊cut function 成 'cut'

自製Filter,使用decorator

tags.py改成

from django import template

register = template.Library()

@register.filter(name='cut')
def cut(value, arg):
return value.replace(arg,'')


上述設定完就可以使用自製的Filter

{{ text | cut:'cool' }}



自製Tag

import datetime
from django import template

register = template.Library()

@register.simple_tag
def current_time(format_string):
    return datetime.datetime.now().strftime(format_string)

參考:https://docs.djangoproject.com/en/1.11/topics/templates/





沒有留言:

張貼留言