五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

Pycharm開發(fā)Django的自定義模版過濾器

2021-10-05 11:07 作者:app毒  | 我要投稿

自定義模版過濾器

雖然DTL給我們內(nèi)置了許多好用的過濾器。但是有些時(shí)候還是不能滿足我們的需求。因此Django給我們提供了一個(gè)接口,可以讓我們自定義過濾器,實(shí)現(xiàn)自己的需求。


模版過濾器必須要放在APP中,并且這個(gè)APP必須要在INSTALLED_APPS中進(jìn)行安裝。然后再在這個(gè)APP下面創(chuàng)建一個(gè)Python包叫做templatetags。再在這個(gè)包下面創(chuàng)建一個(gè)python文件。比如APP的名字叫做book,那么項(xiàng)目結(jié)構(gòu)如下:


- book

? ? - views.py

? ? - urls.py

? ? - models.py

? ? - templatetags

? ? ? ? - my_filter.py

在創(chuàng)建了存儲(chǔ)過濾器的文件后,接下來就是在這個(gè)文件中寫過濾器了。過濾器實(shí)際上就是python中的一個(gè)函數(shù),只不過是把這個(gè)函數(shù)注冊到模板庫中,以后在模板中就可以使用這個(gè)函數(shù)了。但是這個(gè)函數(shù)的參數(shù)有限制,第一個(gè)參數(shù)必須是這個(gè)過濾器需要處理的值,第二個(gè)參數(shù)可有可無,如果有,那么就意味著在模板中可以傳遞參數(shù)。并且過濾器的函數(shù)最多只能有兩個(gè)參數(shù)。在寫完過濾器后,再使用django.template.Library對(duì)象注冊進(jìn)去。示例代碼如下:


from django import template


# 創(chuàng)建模板庫對(duì)象

register = template.Library()


# 過濾器函數(shù)

def mycut(value,mystr):

? ? return value.replace(mystr)


# 將函數(shù)注冊到模板庫中

register.filter("mycut",mycut)

以后想要在模板中使用這個(gè)過濾器,就要在模板中l(wèi)oad一下這個(gè)過濾器所在的模塊的名字(也就是這個(gè)python文件的名字)。示例代碼如下:


{% load my_filter %}

自定義時(shí)間計(jì)算過濾器:

有時(shí)候經(jīng)常會(huì)在朋友圈、微博中可以看到一條信息發(fā)表的時(shí)間,并不是具體的時(shí)間,而是距離現(xiàn)在多久。比如剛剛,1分鐘前等。這個(gè)功能DTL是沒有內(nèi)置這樣的過濾器的,因此我們可以自定義一個(gè)這樣的過濾器。示例代碼如下:


# time_filter.py文件


from datetime import datetime

from django import template


registe

Pycharm開發(fā)Django的自定義模版過濾器的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
双峰县| 孝义市| 青海省| 巢湖市| 安远县| 浮山县| 宁强县| 湘阴县| 阳泉市| 云阳县| 喀喇沁旗| 临沧市| 中阳县| 洪雅县| 深泽县| 桓台县| 德钦县| 临夏市| 盐山县| 巨野县| 思南县| 迭部县| 鹤峰县| 德庆县| 津市市| 兴义市| 湄潭县| 修文县| 垣曲县| 汉川市| 沂源县| 修水县| 辽阳市| 东城区| 屏东市| 信阳市| 行唐县| 潜山县| 兴海县| 湘潭县| 贺州市|