自定義的模版過濾器必須要放在app中,並且該app必須在INSTALLED_APPS中進行安裝。然後再在這個app下麵創建一個python包叫做templatetags(這個名字是固定的,不能隨意更改)。再在這個包下麵創建一個python文件。然後在這個文件中寫過濾器。 過濾器實際上就是python ...
自定義的模版過濾器必須要放在app中,並且該app必須在INSTALLED_APPS中進行安裝。然後再在這個app下麵創建一個python包叫做templatetags(這個名字是固定的,不能隨意更改)。再在這個包下麵創建一個python文件。然後在這個文件中寫過濾器。
過濾器實際上就是python中的一個函數,只不過是把這個函數註冊到模板庫中,以後在模版中使用這個函數了。但是這個函數的參數有限制,第一個參數必須是這個過濾器需要處理的值,第二個參數可有可無,如果有,則在模版中傳參。並且過濾器的函數最多只能有兩個參數。在寫完過濾器後,再使用django.template.library對象註冊進去。實例代碼如下:
過濾器文件中:
1 from django import template 2 3 register = template.Library() 4 5 def my_template(value) 6 if value != '': 7 value += '%' 8 return value 9 # 註冊過濾器 10 # 第一種方式 11 register.filter("my_template",my_template)#引號里的是在模板中使用時的名字,後面的是過濾器文件中的函數名。 12 # 第二種方式 13 使用@register.filter裝飾器進行裝飾過濾器函數,預設過濾器函數名即為模版中使用的名字,如果修改使用名,只需將名字寫在裝飾器的參數中即可,如@register.filter('my'),使用時是寫my,而不是my_template。
模板文件中需要載入:
1 {# 在第一行載入過濾器 #} 2 {% load '過濾器文件的名字' %}