Python Django進階教程(二)(模版過濾器,標籤)

HuangZhang_123發表於2017-05-09

Django版本:1.11
作業系統:Windows
Python:3.5
歡迎加入學習交流QQ群:657341423


上一節講到Django的url和views的進階使用。力求適應複雜多變的系統設計需求。
這節講解的是模版的使用。在基礎教程大概講了用法。這裡就展開詳細講解。


過濾器:‘|’管道符號代表使用過濾器。過濾器的作用就是在渲染模板之前,我們將變數的值進行修改,主要是對樣式和格式的修改


html自動轉意
自動轉意:就是將html裡面的變數直接顯示出來。如果變數裡面含義html語句,也會直接顯示出來。如:
views.py
這裡寫圖片描述
aa.html
這裡寫圖片描述
執行結果:
這裡寫圖片描述
你會看到<b> 是html的程式碼,但是django會自動轉意,不會變成html的程式碼。而是當變數輸出。

如果要關閉這個轉意。
方法一:
views.py與上面的不變。
aa.html
這裡寫圖片描述
執行結果:
這裡寫圖片描述
你會看到,你好這變數變了加粗,也就是將變數裡面的<b> 變成html的程式碼了。

方法二:
views.py與上面的不變。
aa.html
這裡寫圖片描述
執行結果與上面的不變。就是將變數裡面的<b> 變成html的程式碼了。注意,如果將off改為on,這個是開啟轉意的。

總結:
這裡寫圖片描述

default的用法
在過濾器後加default會根據這個引數值是否為空而進行處理,如果在views裡面傳遞這個引數為空,那麼這個引數的值為default的預設值。
看看例子
views.py
這裡寫圖片描述
aa.html
這裡寫圖片描述
執行結果:
這裡寫圖片描述


自定義模版庫
這個分為自定義過濾器和自定義標籤。這裡就詳細講解過濾器。自定義標籤可以參考官網即可。兩者上其實大同小異的。

自定義過濾器網上教程有很多,無非都是在app裡面建立一個templatetags資料夾,然後一個__init__ 和 自定義過濾器的py檔案。然後設定setting.py檔案的INSTALLED_APPS。

但是對於一個新手而言。會有很多疑問,是不是一定要檔名為templatetags?INSTALLED_APPS怎樣一個設定?templatetags資料夾是不是一樣要在app裡面?
1.自定義過濾器所在的資料夾一定為templatetags檔名
2.templatetags資料夾可以放在任何位置,除了專案目錄。
3.INSTALLED_APPS設定為templatetags資料夾所在資料夾目錄
如圖所示:
這裡寫圖片描述
專案目錄有三個資料夾(myapp,mysetting,mysite)
mysite:專案主要設定(URL,setting等)
myapp:App專案。
mysetting:自定義資料夾。(存放自定義過濾器)

可以看到,我將templatetags放在自己生成的資料夾裡面(注意,templatetags資料夾目錄下有init檔案的。)
當然,你也可以將templatetags放在app專案下。這個根據個人喜歡而定。
如果templatetags放在專案目錄下,即和manage.py同一目錄下,會報錯。(not a registered tag library)
這裡寫圖片描述
簡單來說,在主專案(manage.py目錄)下->資料夾(可以自己生成或app資料夾也可)(帶init檔案)->templatetags資料夾(自定義過濾器,標籤)(帶init檔案)

看完templatetags資料夾路徑設定,再看看INSTALLED_APPS設定,這個只需設定templatetags資料夾所在的資料夾的名即可。如圖所示:
這裡寫圖片描述

如果直接寫成templatetags,會報錯:(not a registered tag library)

基本上templatetags和INSTALLED_APPS設定注意事項就是這些。這也是很多教程都沒有提及的事項。往往讓很多人一面懵逼。

接下來講解的是過濾器的寫法,基本上這個網上教程很多,這裡不詳細說了,直接看程式碼。
這裡寫圖片描述
這個過濾器功能直接將字串a替換成空值。
這裡寫圖片描述
對應的html檔案
執行結果:
這裡寫圖片描述


模版的高階使用,基本上都是過濾器和標籤的使用,基本上個人認為,過濾器在實際開發中比較常用,例如講手機號碼變成13******1231這種常見的方法。
還有系統一些已生成的過濾器和自定義過濾器。
過濾器的使用,可以使views.py對變數的處理轉到過濾器處理。減少程式碼的冗餘。


進階教程程式碼:請點選

相關文章