自定義過濾器
過濾器就是python中的函數,注冊後就可以在模闆中當作過濾器使用
Django中的使用模闆的自定義過濾器
在項目的應用下建立templatetags的Python的包
然後建立過濾器的檔案,編寫過濾器函數
三步驟:
1.建立templatetags的包(即目錄裡面有__init__.py檔案)
2.建立過濾器的py
3.到建立的py裡面導入 from django.template import Library
4. 建立一個Library類的對象 register = Library()
5.編寫處理函數 對函數使用裝飾器 @register.filter
6.然後在模闆中進行使用 需要導入 {% load filters %} 導入後就和其他的過濾器一樣來使用
舉例
建立一個項目和應用,然後配置模闆目錄,以及url
在應用的目錄下面建立Python的包 templatetags
建立一個視圖函數,加載頁面,然後傳遞一個清單到前端在建立 templatetags 的目錄下建立filters.py來編寫視圖函數def index(request): """傳遞一個清單給頁面,然後使用自定義過濾器""" ex_list = [1, 2, 3, 4, 5, 6, 7, 8] return render(request, 'index.html', {'ex_list': ex_list})
然後在前端頁面中使用 注意:使用自定義的過濾器時,要在前端頁面進行導入 {% load filters %}""" 自定義過濾器 過濾器其實就是Python函數 自定義的過濾器函數,至少有一個參數,最多兩個參數 """ from django.template import Library '''建立一個Library類的對象''' register = Library() '''使用裝飾器進行注冊''' @register.filter def mod(num): """判斷num是否大于2,或者小于6""" return 2 < num < 6 @register.filter() def mod_val(num,val): """判斷num是否能被val整除""" return num%val == 0
然後運作程式,可以看到已經成功的使用了自定義的過濾器<!DOCTYPE html> <html > {% load filters %} <head> <meta charset="UTF-8"> <title>Title</title> <style> .red { background-color: red; } .blue { background-color: blue; } .green { background-color: green; } </style> </head> <body> <div> <h2>自定義過濾器函數,一個參數</h2> <ul> {% for i in ex_list %} {% if i <= 2 %} <li class="red">小于等于2的為紅色---值為{{ i }}</li> {% elif i|mod %} <li class="blue">大于2小于6的為藍色---值為{{ i }}</li> {% else %} <li class="green">其他的為綠色---值為{{ i }}</li> {% endif %} {% endfor %} </ul> </div> <br/> <br/> <div> <h2>自定義過濾器函數,兩個參數</h2> <ul> {% for i in ex_list %} {% if i|mod_val:2 %} <li class="green">{{ i }}能被2整除</li> {% endif %} {% endfor %} </ul> </div> </body> </html>