黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

詳解在Python的Django框架中創(chuàng)建模板庫(kù)的方法

系統(tǒng) 1946 0

不管是寫自定義標(biāo)簽還是過濾器,第一件要做的事是創(chuàng)建模板庫(kù)(Django能夠?qū)氲幕窘Y(jié)構(gòu))。

創(chuàng)建一個(gè)模板庫(kù)分兩步走:

??? 第一,決定模板庫(kù)應(yīng)該放在哪個(gè)Django應(yīng)用下。 如果你通過 manage.py startapp 創(chuàng)建了一個(gè)應(yīng)用,你可以把它放在那里,或者你可以為模板庫(kù)單獨(dú)創(chuàng)建一個(gè)應(yīng)用。 我們更推薦使用后者,因?yàn)槟愕膄ilter可能在后來(lái)的工程中有用。

??? 無(wú)論你采用何種方式,請(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è)用來(lái)存放你自定義的標(biāo)簽/過濾器定義的文件。 第二個(gè)文件的名字稍后將用來(lái)加載標(biāo)簽。 例如,如果你的自定義標(biāo)簽/過濾器在一個(gè)叫作 poll_extras.py 的文件中,你需要在模板中寫入如下內(nèi)容:

            
{% load poll_extras %}


          

??? {% load %} 標(biāo)簽檢查 INSTALLED_APPS 中的設(shè)置,僅允許加載已安裝的Django應(yīng)用程序中的模板庫(kù)。 這是一個(gè)安全特性;它可以讓你在一臺(tái)電腦上部署很多的模板庫(kù)的代碼,而又不用把它們暴露給每一個(gè)Django安裝。

如果你寫了一個(gè)不和任何特定模型/視圖關(guān)聯(lián)的模板庫(kù),那么得到一個(gè)僅包含 templatetags 包的Django應(yīng)用程序包是完全正常的。 對(duì)于在 templatetags 包中放置多少個(gè)模塊沒有做任何的限制。 需要了解的是:{%load%}語(yǔ)句是通過指定的Python模塊名而不是應(yīng)用名來(lái)加載標(biāo)簽/過濾器的。

一旦創(chuàng)建了Python模塊,你只需根據(jù)是要編寫過濾器還是標(biāo)簽來(lái)相應(yīng)的編寫一些Python代碼。

作為合法的標(biāo)簽庫(kù),模塊需要包含一個(gè)名為register的模塊級(jí)變量。這個(gè)變量是template.Library的實(shí)例,是所有注冊(cè)標(biāo)簽和過濾器的數(shù)據(jù)結(jié)構(gòu)。 所以,請(qǐng)?jiān)谀愕哪K的頂部插入如下語(yǔ)句:

            
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)用程序也包含模板庫(kù)。

創(chuàng)建 register 變量后,你就可以使用它來(lái)創(chuàng)建模板的過濾器和標(biāo)簽了。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論