不管是寫自定義標簽還是過濾器,第一件要做的事是創建模板庫(Django能夠導入的基本結構)。
創建一個模板庫分兩步走:
??? 第一,決定模板庫應該放在哪個Django應用下。 如果你通過 manage.py startapp 創建了一個應用,你可以把它放在那里,或者你可以為模板庫單獨創建一個應用。 我們更推薦使用后者,因為你的filter可能在后來的工程中有用。
??? 無論你采用何種方式,請確保把你的應用添加到 INSTALLED_APPS 中。 我們稍后會解釋這一點。
??? 第二,在適當的Django應用包里創建一個 templatetags 目錄。 這個目錄應當和 models.py 、 views.py 等處于同一層次。 例如:
books/ __init__.py models.py templatetags/ views.py
??? 在 templatetags 中創建兩個空文件: 一個 __init__.py (告訴Python這是 一個包含了Python代碼的包)和一個用來存放你自定義的標簽/過濾器定義的文件。 第二個文件的名字稍后將用來加載標簽。 例如,如果你的自定義標簽/過濾器在一個叫作 poll_extras.py 的文件中,你需要在模板中寫入如下內容:
{% load poll_extras %}
??? {% load %} 標簽檢查 INSTALLED_APPS 中的設置,僅允許加載已安裝的Django應用程序中的模板庫。 這是一個安全特性;它可以讓你在一臺電腦上部署很多的模板庫的代碼,而又不用把它們暴露給每一個Django安裝。
如果你寫了一個不和任何特定模型/視圖關聯的模板庫,那么得到一個僅包含 templatetags 包的Django應用程序包是完全正常的。 對于在 templatetags 包中放置多少個模塊沒有做任何的限制。 需要了解的是:{%load%}語句是通過指定的Python模塊名而不是應用名來加載標簽/過濾器的。
一旦創建了Python模塊,你只需根據是要編寫過濾器還是標簽來相應的編寫一些Python代碼。
作為合法的標簽庫,模塊需要包含一個名為register的模塊級變量。這個變量是template.Library的實例,是所有注冊標簽和過濾器的數據結構。 所以,請在你的模塊的頂部插入如下語句:
from django import template register = template.Library()
注意
請閱讀Django默認的過濾器和標簽的源碼,那里有大量的例子。 他們分別為: django/template/defaultfilters.py 和 django/template/defaulttags.py 。django.contrib中的某些應用程序也包含模板庫。
創建 register 變量后,你就可以使用它來創建模板的過濾器和標簽了。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
