欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

編寫(xiě)自定義的Django模板加載器的簡(jiǎn)單示例

 更新時(shí)間:2015年07月21日 09:49:07   投稿:goldensun  
這篇文章主要介紹了編寫(xiě)自定義的Django模板加載器的簡(jiǎn)單示例,Django是各色人氣Python框架中最為著名的一個(gè),需要的朋友可以參考下

Djangos 內(nèi)置的模板加載器(在先前的模板加載內(nèi)幕章節(jié)有敘述)通常會(huì)滿足你的所有的模板加載需求,但是如果你有特殊的加載需求的話,編寫(xiě)自己的模板加載器也會(huì)相當(dāng)簡(jiǎn)單。 比如:你可以從數(shù)據(jù)庫(kù)中,或者利用Python的綁定直接從Subversion庫(kù)中,更或者從一個(gè)ZIP文檔中加載模板。

模板加載器,也就是 TEMPLATE_LOADERS 中的每一項(xiàng),都要能被下面這個(gè)接口調(diào)用:

load_template_source(template_name, template_dirs=None)

參數(shù) template_name 是所加載模板的名稱(chēng) (和傳遞給 loader.get_template() 或者 loader.select_template() 一樣), 而 template_dirs 是一個(gè)可選的代替TEMPLATE_DIRS的搜索目錄列表。

如果加載器能夠成功加載一個(gè)模板, 它應(yīng)當(dāng)返回一個(gè)元組: (template_source, template_path) 。在這里的 template_source 就是將被模板引擎編譯的的模板字符串,而 template_path 是被加載的模板的路徑。 由于那個(gè)路徑可能會(huì)出于調(diào)試目的顯示給用戶,因此它應(yīng)當(dāng)很快的指明模板從哪里加載。

如果加載器加載模板失敗,那么就會(huì)觸發(fā) django.template.TemplateDoesNotExist 異常。

每個(gè)加載函數(shù)都應(yīng)該有一個(gè)名為 is_usable 的函數(shù)屬性。 這個(gè)屬性是一個(gè)布爾值,用于告知模板引擎這個(gè)加載器是否在當(dāng)前安裝的Python中可用。 例如,如果 pkg_resources 模塊沒(méi)有安裝的話,eggs加載器(它能夠從python eggs中加載模板)就應(yīng)該把 is_usable 設(shè)為 False ,因?yàn)楸仨毻ㄟ^(guò) pkg_resources 才能從eggs中讀取數(shù)據(jù)。

一個(gè)例子可以清晰地闡明一切。 這兒是一個(gè)模板加載函數(shù),它可以從ZIP文件中加載模板。 它使用了自定義的設(shè)置 TEMPLATE_ZIP_FILES 來(lái)取代了 TEMPLATE_DIRS 用作查找路徑,并且它假設(shè)在此路徑上的每一個(gè)文件都是包含模板的ZIP文件:

from django.conf import settings
from django.template import TemplateDoesNotExist
import zipfile

def load_template_source(template_name, template_dirs=None):
  "Template loader that loads templates from a ZIP file."

  template_zipfiles = getattr(settings, "TEMPLATE_ZIP_FILES", [])

  # Try each ZIP file in TEMPLATE_ZIP_FILES.
  for fname in template_zipfiles:
    try:
      z = zipfile.ZipFile(fname)
      source = z.read(template_name)
    except (IOError, KeyError):
      continue
    z.close()
    # We found a template, so return the source.
    template_path = "%s:%s" % (fname, template_name)
    return (source, template_path)

  # If we reach here, the template couldn't be loaded
  raise TemplateDoesNotExist(template_name)

# This loader is always usable (since zipfile is included with Python)
load_template_source.is_usable = True

我們要想使用它,還差最后一步,就是把它加入到 TEMPLATE_LOADERS 。 如果我們將這個(gè)代碼放入一個(gè)叫mysite.zip_loader的包中,那么我們要把mysite.zip_loader.load_template_source加到TEMPLATE_LOADERS中。

相關(guān)文章

  • Python Selenium網(wǎng)頁(yè)自動(dòng)化利器使用詳解

    Python Selenium網(wǎng)頁(yè)自動(dòng)化利器使用詳解

    這篇文章主要為大家介紹了使用Python Selenium實(shí)現(xiàn)網(wǎng)頁(yè)自動(dòng)化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • python攻防-破解附近局域網(wǎng)WIFI密碼實(shí)現(xiàn)上網(wǎng)自由

    python攻防-破解附近局域網(wǎng)WIFI密碼實(shí)現(xiàn)上網(wǎng)自由

    本文將記錄學(xué)習(xí)如何通過(guò) Python 腳本實(shí)破解附近局域網(wǎng) WIFI 密碼的暴力破解,隨時(shí)隨地免費(fèi)蹭網(wǎng),再也不被WiFi密碼困擾,實(shí)現(xiàn)蹭網(wǎng)自由
    2021-08-08
  • python裝飾器簡(jiǎn)介---這一篇也許就夠了(推薦)

    python裝飾器簡(jiǎn)介---這一篇也許就夠了(推薦)

    這篇文章主要介紹了python裝飾器簡(jiǎn)介,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 一文搞懂Pandas數(shù)據(jù)透視的4個(gè)函數(shù)的使用

    一文搞懂Pandas數(shù)據(jù)透視的4個(gè)函數(shù)的使用

    今天主要和大家分享Pandas中四種有關(guān)數(shù)據(jù)透視的通用函數(shù),在數(shù)據(jù)處理中遇到這類(lèi)需求時(shí),能夠很好地應(yīng)對(duì),快跟隨小編一起學(xué)習(xí)一下吧
    2022-06-06
  • Python?讀取?Word?文檔操作

    Python?讀取?Word?文檔操作

    這篇文章主要介紹了Python讀取Word文檔操作,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • 在linux系統(tǒng)下安裝python librtmp包的實(shí)現(xiàn)方法

    在linux系統(tǒng)下安裝python librtmp包的實(shí)現(xiàn)方法

    今天小編就為大家分享一篇在linux系統(tǒng)下安裝python librtmp包的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • Python socket服務(wù)常用操作代碼實(shí)例

    Python socket服務(wù)常用操作代碼實(shí)例

    這篇文章主要介紹了Python socket服務(wù)常用操作代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • python實(shí)現(xiàn)的希爾排序算法實(shí)例

    python實(shí)現(xiàn)的希爾排序算法實(shí)例

    這篇文章主要介紹了python實(shí)現(xiàn)的希爾排序算法,實(shí)例分析了基于Python實(shí)現(xiàn)希爾排序的相關(guān)技巧,需要的朋友可以參考下
    2015-07-07
  • python正則表達(dá)式re模塊的使用示例詳解

    python正則表達(dá)式re模塊的使用示例詳解

    這篇文章主要為大家介紹了python正則表達(dá)式re模塊的使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • python 動(dòng)態(tài)調(diào)用函數(shù)實(shí)例解析

    python 動(dòng)態(tài)調(diào)用函數(shù)實(shí)例解析

    這篇文章主要介紹了python 動(dòng)態(tài)調(diào)用函數(shù)實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10

最新評(píng)論