詳解在Python的Django架構中建立模板庫的方法

來源:互聯網
上載者:User
不管是寫自訂標籤還是過濾器,第一件要做的事是建立模板庫(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 templateregister = template.Library()

注意

請閱讀Django預設的過濾器和標籤的源碼,那裡有大量的例子。 他們分別為: django/template/defaultfilters.py 和 django/template/defaulttags.py 。django.contrib中的某些應用程式也包含模板庫。

建立 register 變數後,你就可以使用它來建立模板的過濾器和標籤了。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.