Django中自定义过滤器的使用
?
我在這里做的是: 從數(shù)據(jù)庫(kù)查出id遞增的一些信息,展示在前臺(tái)。
編寫(xiě)一個(gè)過(guò)濾器判斷查出數(shù)據(jù)的id是偶數(shù)的返回True 奇數(shù)返回False
?
?
1 創(chuàng)建項(xiàng)目,創(chuàng)建應(yīng)用,注冊(cè)應(yīng)用,配置settings.py文件,配置urls映射,編寫(xiě)views試圖,編寫(xiě)模板templates,編寫(xiě)models模塊
切記 注冊(cè)應(yīng)用。 ?很多伙伴找不到自己定義的過(guò)濾器,是因?yàn)橥涀?cè)應(yīng)用!
?
?
2 創(chuàng)建過(guò)濾器的目錄:
實(shí)際上,在項(xiàng)目目錄或者應(yīng)用目錄下創(chuàng)建都是可以的,創(chuàng)建一個(gè)名為templatetags的python模塊
在我這里,booktest是一個(gè)應(yīng)用,templatetags 是存放過(guò)濾器的模塊,,模塊和目錄的區(qū)別是 模塊里面必須有__init__.py,告訴python這是可以import的東西
在templatetags模塊里,建立一個(gè)py文件,寫(xiě)我們的自定義過(guò)濾器,文件名稱可以自己定,這里我用filters.py
?
3 過(guò)濾器的編寫(xiě):
1 from django.template import Library 2 3 register = Library() 4 5 #一個(gè)偶數(shù)為真的過(guò)濾器 6 @register.filter # @register.filter(name='odd') 過(guò)濾器里面有很多選項(xiàng)7 def odd(num ):
8 return num%2==0
過(guò)濾器必須用Library().filter 來(lái)進(jìn)行裝飾, name表示過(guò)濾器的名字,也可以不指定,函數(shù)名就是過(guò)濾的名字
裝飾后的函數(shù),才能當(dāng)作過(guò)濾器來(lái)使用
?
?
4 模板文件引入過(guò)濾器和使用
?
1 <!DOCTYPE html> 2 <html lang="en"> 3 4 {# 必須用這一句去引用過(guò)濾器 filters是我過(guò)濾器所在py文件的名字 #} 5 {% load filters %} 6 7 <head> 8 <meta charset="UTF-8"> 9 <title>Title</title> 10 <style> 11 .red{ 12 background-color: red; 13 } 14 .gold{ 15 background-color: gold; 16 } 17 </style> 18 </head> 19 <body> 20 <ul> 21 {% for book in books %} 22 {# 使用過(guò)濾器 #} 23 {% if book.id|odd %} 24 <li class="red"> 25 {{ book.id }}----{{ book.btitle }}----{{ book.bpub_date|date:'Y-m-d' }} 26 </li> 27 {% else %} 28 <li class="gold" > 29 {{ book.id }}----{{ book.btitle }}----{{ book.bpub_date|date:'Y-m-d' }} 30 </li> 31 {% endif %} 32 {% endfor %} 33 34 </ul> 35 36 <ul> 37 {% for hero in heros %} 38 <li >{{ hero.id }}----{{ hero.hname }}</li> 39 {% endfor %} 40 41 </ul> 42 43 </body> 44 </html>?
?
?
?
在模板中必須用{%load name%} 來(lái)引入我們的過(guò)濾器函數(shù)所在的py文件,name是py文件的名字 這里我的事filters
之后 如果使用過(guò)濾器那么就直接 變量|過(guò)濾器 就可以了。
?
{# 必須用這一句去引用過(guò)濾器 filters是我過(guò)濾器所在py文件的名字 #} {% load filters %}?
{# 使用過(guò)濾器 #}{% if book.id|odd %}<li class="red">{{ book.id }}----{{ book.btitle }}----{{ book.bpub_date|date:'Y-m-d' }}</li>{% else %}?
?
?
我做的是 ?id是基數(shù)和偶數(shù)分別改變不同的背景色。
?
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/Lin-Yi/p/7560744.html
總結(jié)
以上是生活随笔為你收集整理的Django中自定义过滤器的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 文件排版,较难的线性dp
- 下一篇: OPENCV学习笔记2-5_扫描图像并访