詳解在Python的Django框架中創(chuàng)建模板庫的方法
不管是寫自定義標(biāo)簽還是過濾器,第一件要做的事是創(chuàng)建模板庫(Django能夠?qū)氲幕窘Y(jié)構(gòu))。
創(chuàng)建一個(gè)模板庫分兩步走:
第一,決定模板庫應(yīng)該放在哪個(gè)Django應(yīng)用下。 如果你通過 manage.py startapp 創(chuàng)建了一個(gè)應(yīng)用,你可以把它放在那里,或者你可以為模板庫單獨(dú)創(chuàng)建一個(gè)應(yīng)用。 我們更推薦使用后者,因?yàn)槟愕膄ilter可能在后來的工程中有用。
無論你采用何種方式,請(qǐng)確保把你的應(yīng)用添加到 INSTALLED_APPS 中。 我們稍后會(huì)解釋這一點(diǎn)。
第二,在適當(dāng)?shù)腄jango應(yīng)用包里創(chuàng)建一個(gè) templatetags 目錄。 這個(gè)目錄應(yīng)當(dāng)和 models.py 、 views.py 等處于同一層次。 例如:
books/ __init__.py models.py templatetags/ views.py
在 templatetags 中創(chuàng)建兩個(gè)空文件: 一個(gè) __init__.py (告訴Python這是 一個(gè)包含了Python代碼的包)和一個(gè)用來存放你自定義的標(biāo)簽/過濾器定義的文件。 第二個(gè)文件的名字稍后將用來加載標(biāo)簽。 例如,如果你的自定義標(biāo)簽/過濾器在一個(gè)叫作 poll_extras.py 的文件中,你需要在模板中寫入如下內(nèi)容:
{% load poll_extras %}
{% load %} 標(biāo)簽檢查 INSTALLED_APPS 中的設(shè)置,僅允許加載已安裝的Django應(yīng)用程序中的模板庫。 這是一個(gè)安全特性;它可以讓你在一臺(tái)電腦上部署很多的模板庫的代碼,而又不用把它們暴露給每一個(gè)Django安裝。
如果你寫了一個(gè)不和任何特定模型/視圖關(guān)聯(lián)的模板庫,那么得到一個(gè)僅包含 templatetags 包的Django應(yīng)用程序包是完全正常的。 對(duì)于在 templatetags 包中放置多少個(gè)模塊沒有做任何的限制。 需要了解的是:{%load%}語句是通過指定的Python模塊名而不是應(yīng)用名來加載標(biāo)簽/過濾器的。
一旦創(chuàng)建了Python模塊,你只需根據(jù)是要編寫過濾器還是標(biāo)簽來相應(yīng)的編寫一些Python代碼。
作為合法的標(biāo)簽庫,模塊需要包含一個(gè)名為register的模塊級(jí)變量。這個(gè)變量是template.Library的實(shí)例,是所有注冊(cè)標(biāo)簽和過濾器的數(shù)據(jù)結(jié)構(gòu)。 所以,請(qǐng)?jiān)谀愕哪K的頂部插入如下語句:
from django import template register = template.Library()
注意
請(qǐng)閱讀Django默認(rèn)的過濾器和標(biāo)簽的源碼,那里有大量的例子。 他們分別為: django/template/defaultfilters.py 和 django/template/defaulttags.py 。django.contrib中的某些應(yīng)用程序也包含模板庫。
創(chuàng)建 register 變量后,你就可以使用它來創(chuàng)建模板的過濾器和標(biāo)簽了。
- Python 數(shù)據(jù)的累加與統(tǒng)計(jì)的示例代碼
- 用python按照?qǐng)D像灰度值統(tǒng)計(jì)并篩選圖片的操作(PIL,shutil,os)
- python統(tǒng)計(jì)字符串中字母出現(xiàn)次數(shù)代碼實(shí)例
- python統(tǒng)計(jì)文章中單詞出現(xiàn)次數(shù)實(shí)例
- Python統(tǒng)計(jì)文本詞匯出現(xiàn)次數(shù)的實(shí)例代碼
- python統(tǒng)計(jì)函數(shù)庫scipy.stats的用法解析
- python實(shí)現(xiàn)數(shù)據(jù)分析與建模
- python 應(yīng)用之Pycharm 新建模板默認(rèn)添加編碼格式-作者-時(shí)間等信息【推薦】
- Python基于Logistic回歸建模計(jì)算某銀行在降低貸款拖欠率的數(shù)據(jù)示例
- Python內(nèi)建模塊struct實(shí)例詳解
- Python創(chuàng)建模塊及模塊導(dǎo)入的方法
- Python進(jìn)行統(tǒng)計(jì)建模
相關(guān)文章
pycharm2021激活碼使用教程(永久激活親測(cè)可用)
pycharm2021激活碼是一個(gè)可以輕松幫助用戶免費(fèi)激活pycharm2021.1軟件的文件,雖然說pycharm現(xiàn)在只是推出了2021.1的EAP版,但是如果你想先率先體驗(yàn)一波,那么就可以利用小編提供的這個(gè)激活碼來進(jìn)行使用啦,并這個(gè)激活碼是永久有效的2021-03-03pandas 轉(zhuǎn)換成行列表進(jìn)行讀取與Nan處理的方法
今天小編就為大家分享一篇pandas 轉(zhuǎn)換成行列表進(jìn)行讀取與Nan處理的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-10-10通過selenium抓取某東的TT購買記錄并分析趨勢(shì)過程解析
這篇文章主要介紹了通過selenium抓取某東的TT購買記錄并分析趨勢(shì)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08python常見數(shù)制轉(zhuǎn)換實(shí)例分析
這篇文章主要介紹了python常見數(shù)制轉(zhuǎn)換,實(shí)例分析了二進(jìn)制、八進(jìn)制、十進(jìn)制及十六進(jìn)制之間的相互轉(zhuǎn)換技巧,需要的朋友可以參考下2015-05-05用python實(shí)現(xiàn)爬取奧特曼圖片實(shí)例
大家好,本篇文章主要講的是用python實(shí)現(xiàn)爬取奧特曼圖片實(shí)例,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下2022-02-02python+pywinauto+lackey實(shí)現(xiàn)PC端exe自動(dòng)化的示例代碼
這篇文章主要介紹了python+pywinauto+lackey實(shí)現(xiàn)PC端exe自動(dòng)化的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04Python如何快速生成本項(xiàng)目的requeirments.txt實(shí)現(xiàn)
本文主要介紹了Python如何快速生成本項(xiàng)目的requeirments.txt實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03python+pyqt5實(shí)現(xiàn)KFC點(diǎn)餐收銀系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python+pyqt5實(shí)現(xiàn)KFC點(diǎn)餐收銀系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01