一、關(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頁面







