Django的自定義模板過濾器(十六)

一、關(guān)于自定義的解釋

自定義的一些東西是為了滿足系統(tǒng)內(nèi)置完成不了的一些功能。

二、自定義代碼文件夾路徑配置(代碼布局)

1、第一種方式(某個app特有的自定義代碼文件夾)

  • 首先在app目錄下創(chuàng)建templatetags文件夾
  • 之后再到templatetags文件夾下創(chuàng)建python模塊(自定義過濾器及標簽py文件)
    注意:templatetags是一個帶有__init__.py的模塊的文件夾。

2、第二種方式(定義復(fù)用的,即公用的python包文件夾)

  • 首先在項目根目錄下先創(chuàng)建一個新的python包(可以取名為common)。
  • 之后在將common文件夾加入到settings.py文件中的INSTALLED_APP列表中,進行注冊。
  • 在common里面創(chuàng)建目錄templatetags,在目錄里面創(chuàng)建自定義過濾器及標簽文件。

    3、注意事項
    (1)templatetags這個目錄名字是固定的,而里面的模塊名是自定義的。
    (2)templates是存放模板的目錄,templatetags是存放自定義標簽及自定義過濾器的目錄。

三、自定義模板過濾器

1、模板過濾器的分析
模板過濾器的本質(zhì)是一個函數(shù),有一個或者兩個參數(shù);第一個參數(shù)是傳進來的模板變量,第二個參數(shù)是普通的參數(shù)、默認的及可以不要的參數(shù);最終函數(shù)返回一個字符串

2、自定義過濾器的注冊步驟(實例演示):

  • 在teacher/templatetags路徑下創(chuàng)建自定義過濾器文件(defined_filters.py)。
  • 注冊自定義過濾器
    django.template.Library.filter()
    (1)Library.filter()方法需要兩個參數(shù):
    a、 過濾器的名稱(一個字符串對象)
    name:過濾器的名稱,是個字符串,可以不寫,默認是使用方法名作為過濾器的名稱。
    b、編譯的函數(shù)
    一個Python函數(shù)(不要把函數(shù)名寫成字符串)----filter_func 定義的過濾器的函數(shù)。
    (2)沒有聲明 name 參數(shù),Django將使用函數(shù)名作為過濾器的名字
方法一----------通過調(diào)用函數(shù)來對自定義過濾器進行注冊
方法二--------通過裝飾器來對過濾器進行注冊

3、使用自定義過濾器

  • 在模板中使用自定義的過濾器:
    需要使用{% load %}標簽將我們的自定義過濾器的模塊加載進來。 {% load %} 聲明將會載入給定模塊名中的標簽/過濾器。

    4、訪問服務(wù)器顯示web頁面
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 為什么需要過濾器? 因為在DTL中,不支持函數(shù)的調(diào)用形式(),因此不能給函數(shù)傳遞參數(shù),這將有很大的局限性。而過濾器...
    xinmin閱讀 534評論 0 0
  • Django中的模板過濾器強大又好用。當然如果你的項目是前后端分離,未用到模板,那也就不存在模板過濾器一說。 模板...
    大阿拉伯人閱讀 3,820評論 2 5
  • 約他年,東還海道,愿謝公,雅志莫相違。
    踏野尋青閱讀 148評論 0 0
  • 【微公益】【703】【每日經(jīng)典,伴您早起】【20170328孟子177】 陳子曰:“古之君子何如則仕?”孟子曰:“...
    北冥_鯤閱讀 346評論 2 3
  • 優(yōu)秀是一種習(xí)慣,生命是一種過程,放棄是一種智慧,缺陷是一種恩惠,笑而不語是一種豁達,痛而不言是一種修為。悟透這些,...
    Kingofcool閱讀 215評論 0 0

友情鏈接更多精彩內(nèi)容