Python Django進階教程(二)(模版過濾器,標籤)
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對變數的處理轉到過濾器處理。減少程式碼的冗餘。
相關文章
- Django自定義模板標籤與過濾器Django過濾器
- Django5關於 自定義過濾器和標籤Django過濾器
- wangEditor編輯器過濾word文件自帶標籤樣式
- Django學習——Django settings 原始碼、模板語法之傳值、模板語法之獲取值、模板語法之過濾器、模板語法之標籤、自定義過濾器、標籤、inclusion_tag、模板的匯入、模板的繼承Django原始碼過濾器繼承
- django2中自定義過濾器Django過濾器
- Django(31)模板中常用的過濾器Django過濾器
- Django4:模板(zhong)—常用過濾器Django過濾器
- php過濾html標籤、特殊字元、轉義字元PHPHTML字元
- Django(69)最好用的過濾器外掛Django-filterDjango過濾器Filter
- Mybatis的<if>標籤的坑,0會被過濾掉?MyBatis
- Django(67)drf搜尋過濾和排序過濾Django排序
- django-模板之標籤Django
- Python+django網頁設計入門(18):自定義模板過濾器PythonDjango網頁過濾器
- dedecms 模版裡格式化時間標籤
- aardio教程二) 進階語法
- 【模組二】Python進階Python
- Django 模板標籤-第26篇Django
- python-進階教程-通過公共鍵對字典列表排序Python排序
- 【Python】正規表示式過濾文字中的html標籤、url超連結、img連結PythonHTML
- Java進階篇設計模式之六 ----- 組合模式和過濾器模式Java設計模式過濾器
- Django 進階之 celeryDjango
- Django進階之路(一)Django
- Django REST framework API 指南(16):過濾DjangoRESTFrameworkAPI
- 過濾器過濾器
- python-進階教程-對切片進行命名Python
- Python進階教程5——物件導向Python物件
- [提問交流]請問模版標籤如何傳統變數?變數
- pycharm設定python標頭檔案模版PyCharmPython
- 4、過濾器的使用及自定義過濾器過濾器
- 點雲濾波器與過濾器過濾器
- JRebel過期啟用(二)進階篇
- Python 函式進階-迭代器Python函式
- python教程12-物件導向進階Python物件
- CAN過濾器過濾器
- Filter過濾器Filter過濾器
- vue 過濾器Vue過濾器
- NetCore過濾器NetCore過濾器
- 代理過濾器過濾器
- Vue過濾器Vue過濾器