Django从理论到实战(part21)--自定义模板过滤器
學習筆記,僅供參考
參考自:Django打造大型企業官網–Huang Y;
本系列Blog以應用為主,理論基礎部分我在后端專欄的Django系列博客已經寫過了,如果有些需要補充的知識點,我會在這個系列中,盡量詳細的記錄一下。
自定義模板過濾器
理論
Django給我們提供了一個接口,可以讓我們自定義過濾器,實現自己的需求。
過濾器實際上就是python中的一個函數,只不過是把這個函數注冊到模板庫中,以后在模板中就可以使用這個函數了,但是這個函數的參數有限制,第一個參數必須是這個過濾器需要處理的值,第二個參數可有可無,如果有,那么就意味著在模板中可以傳遞參數,并且過濾器的函數最多只能有兩個參數。寫完過濾器后,需要使用django.template.Library對象將自定義過濾器進行注冊。
實踐
- 創建templatetags包
我們在項目newwebsite2的應用book下創建一個templatetags包:
- 創建自定義過濾器
在這個包下面創建一個python文件,我們命名為my_filter.py:
from django import template# 創建模板庫對象 register = template.Library()# 過濾器函數 def mycut(value,mystr):return value.replace(mystr, "-")# 將函數注冊到模板庫中 register.filter("mycut",mycut)register.filter方法中第一個參數為自定義過濾器的名字,第二個參數為自定義過濾器所對應的函數。
- 安裝app
打開settings.py文件,并將app安裝到INSTALLED_APPS列表中:
INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','book', ]- 創建模板文件
如果想在模板中使用這個自定義過濾器,就要在模板中load一下這個過濾器所在的模塊的名字(也就是這個python文件的名字)。
在templates文件夾中,創建模板文件my_cut.html:
{% load my_filter %} <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>小黃之家</title> </head> <body><p>{{ "馬鞍山"|mycut:"鞍" }}</p></body> </html>- 發起請求
我們向http://127.0.0.1:8000/my_cut/發起請求:
Very Well !
總結
以上是生活随笔為你收集整理的Django从理论到实战(part21)--自定义模板过滤器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 车险必买哪三种?
- 下一篇: R语言观察日志(part3)--repe