Django框架(24.Django中的模板的自定义过滤器)
自定義過濾器
過濾器就是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
? ?
? 創建一個視圖函數,加載頁面,然后傳遞一個列表到前端
def index(request):"""傳遞一個列表給頁面,然后使用自定義過濾器"""ex_list = [1, 2, 3, 4, 5, 6, 7, 8]return render(request, 'index.html', {'ex_list': ex_list})?在創建?templatetags 的目錄下創建filters.py來編寫視圖函數
"""自定義過濾器過濾器其實就是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? 然后在前端頁面中使用? ? ?注意:使用自定義的過濾器時,要在前端頁面進行導入? ??{% load filters %}
<!DOCTYPE html> <html lang="en"> {% 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>然后運行程序,可以看到已經成功的使用了自定義的過濾器
總結
以上是生活随笔為你收集整理的Django框架(24.Django中的模板的自定义过滤器)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Django框架(23.Django中的
- 下一篇: Django2中使用xadmin