自定義的模版過濾器必需要放在app中,而且該app必須在INSTALLED_APPS中進行安裝。而後再在這個app下面建立一個python包叫作templatetags(這個名字是固定的,不能隨意更改)。再在這個包下面建立一個python文件。而後在這個文件中寫過濾器。
過濾器實際上就是python中的一個函數,只不過是把這個函數註冊到模板庫中,之後在模版中使用這個函數了。可是這個函數的參數有限制,第一個參數必須是這個過濾器須要處理的值,第二個參數無關緊要,若是有,則在模版中傳參。而且過濾器的函數最多隻能有兩個參數。在寫完過濾器後,再使用django.template.library對象註冊進去。實例代碼以下:
過濾器文件中:python
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。
模板文件中須要加載:django
1 {# 在第一行加載過濾器 #} 2 {% load '過濾器文件的名字' %}