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

詳解Python的Django框架中inclusion_tag的使用

 更新時(shí)間:2015年07月21日 09:38:45   投稿:goldensun  
這篇文章主要介紹了詳解Python的Django框架中inclusion_tag的使用,文中示例基于Python較早的2.x版本,希望能夠注意一下,需要的朋友可以參考下

另外一類常用的模板標(biāo)簽是通過渲染 其他 模板顯示數(shù)據(jù)的。 比如說,Django的后臺(tái)管理界面,它使用了自定義的模板標(biāo)簽來顯示新增/編輯表單頁面下部的按鈕。 那些按鈕看起來總是一樣的,但是鏈接卻隨著所編輯的對(duì)象的不同而改變。 這就是一個(gè)使用小模板很好的例子,這些小模板就是當(dāng)前對(duì)象的詳細(xì)信息。

這些排序標(biāo)簽被稱為 包含標(biāo)簽 。如何寫包含標(biāo)簽最好通過舉例來說明。 讓我們來寫一個(gè)能夠產(chǎn)生指定作者對(duì)象的書籍清單的標(biāo)簽。 我們將這樣利用標(biāo)簽:

{% books_for_author author %}

結(jié)果將會(huì)像下面這樣:

<ul>
  <li>The Cat In The Hat</li>
  <li>Hop On Pop</li>
  <li>Green Eggs And Ham</li>
</ul>

首先,我們定義一個(gè)函數(shù),通過給定的參數(shù)生成一個(gè)字典形式的結(jié)果。 需要注意的是,我們只需要返回字典類型的結(jié)果就行了,不需要返回更復(fù)雜的東西。 這將被用來作為模板片段的內(nèi)容:

def books_for_author(author):
  books = Book.objects.filter(authors__id=author.id)
  return {'books': books}

接下來,我們創(chuàng)建用于渲染標(biāo)簽輸出的模板。 在我們的例子中,模板很簡(jiǎn)單:

<ul>
{% for book in books %}
  <li>{{ book.title }}</li>
{% endfor %}
</ul>

最后,我們通過對(duì)一個(gè) Library 對(duì)象使用 inclusion_tag() 方法來創(chuàng)建并注冊(cè)這個(gè)包含標(biāo)簽。

在我們的例子中,如果先前的模板在 polls/result_snippet.html 文件中,那么我們這樣注冊(cè)標(biāo)簽:

register.inclusion_tag('book_snippet.html')(books_for_author)

Python 2.4裝飾器語法也能正常工作,所以我們可以這樣寫:

@register.inclusion_tag('book_snippet.html')
def books_for_author(author):
  # ...

有時(shí)候,你的包含標(biāo)簽需要訪問父模板的context。 為了解決這個(gè)問題,Django為包含標(biāo)簽提供了一個(gè) takes_context 選項(xiàng)。 如果你在創(chuàng)建模板標(biāo)簽時(shí),指明了這個(gè)選項(xiàng),這個(gè)標(biāo)簽就不需要參數(shù),并且下面的Python函數(shù)會(huì)帶一個(gè)參數(shù): 就是當(dāng)這個(gè)標(biāo)簽被調(diào)用時(shí)的模板context。

例如,你正在寫一個(gè)包含標(biāo)簽,該標(biāo)簽包含有指向主頁的 home_link 和 home_title 變量。 Python函數(shù)會(huì)像這樣:

@register.inclusion_tag('link.html', takes_context=True)
def jump_link(context):
  return {
    'link': context['home_link'],
    'title': context['home_title'],
  }

(注意函數(shù)的第一個(gè)參數(shù) 必須 是 context 。)

模板 link.html 可能包含下面的東西:

Jump directly to <a href="{{ link }}">{{ title }}</a>.

然后您想使用自定義標(biāo)簽時(shí),就可以加載它的庫,然后不帶參數(shù)地調(diào)用它,就像這樣:

{% jump_link %}

相關(guān)文章

  • python下如何查詢CS反恐精英的服務(wù)器信息

    python下如何查詢CS反恐精英的服務(wù)器信息

    這篇文章主要介紹了python下如何查詢CS反恐精英服務(wù)器信息的方法,分別分享了反恐精英1.5版本和反恐精英1.6版本的實(shí)現(xiàn)方法示例,有需要的朋友們可以參考借鑒,下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-01-01
  • Python搶購腳本的編寫方法

    Python搶購腳本的編寫方法

    本文給大家分享一個(gè)秒殺搶購腳本,幫助大家雙十二搶購心愛的禮物,步驟很簡(jiǎn)單,下面小編給大家分享基于Python搶購腳本的編寫方法,感興趣的朋友一起看看吧
    2021-11-11
  • python中rb含義理解

    python中rb含義理解

    在本篇文章里小編給大家整理的是關(guān)于python中rb含義及用法內(nèi)容,需要的朋友們可以學(xué)習(xí)下。
    2020-06-06
  • python神經(jīng)網(wǎng)絡(luò)slim常用函數(shù)訓(xùn)練保存模型

    python神經(jīng)網(wǎng)絡(luò)slim常用函數(shù)訓(xùn)練保存模型

    這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)使用slim函數(shù)進(jìn)行模型的訓(xùn)練及保存模型示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • python問題匯總之pycharm查找不到安裝的庫解決

    python問題匯總之pycharm查找不到安裝的庫解決

    這篇文章主要給大家介紹了關(guān)于python問題匯總之pycharm查找不到安裝庫的解決方法,PyCharm是一款非常流行的Python集成開發(fā)環(huán)境(IDE),它提供了豐富的功能和插件,可以幫助程序員更高效地編寫Python代碼,需要的朋友可以參考下
    2023-09-09
  • python實(shí)現(xiàn)XML解析的方法解析

    python實(shí)現(xiàn)XML解析的方法解析

    這篇文章主要介紹了python實(shí)現(xiàn)XML解析的方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Python中的time模塊與datetime模塊用法總結(jié)

    Python中的time模塊與datetime模塊用法總結(jié)

    Python中內(nèi)置的各項(xiàng)時(shí)間日期函數(shù)幾乎都來自于time和datetime這兩個(gè)模塊,下面整理了Python中的time模塊與datetime模塊用法總結(jié),需要的朋友可以參考下
    2016-06-06
  • Python實(shí)現(xiàn)前向和反向自動(dòng)微分的示例代碼

    Python實(shí)現(xiàn)前向和反向自動(dòng)微分的示例代碼

    自動(dòng)微分技術(shù)(稱為“automatic differentiation, autodiff”)是介于符號(hào)微分和數(shù)值微分的一種技術(shù),它是在計(jì)算效率和計(jì)算精度之間的一種折衷。本文主要介紹了Python如何實(shí)現(xiàn)前向和反向自動(dòng)微分,需要的可以參考一下
    2022-12-12
  • Python逐行讀取文件中內(nèi)容的簡(jiǎn)單方法

    Python逐行讀取文件中內(nèi)容的簡(jiǎn)單方法

    今天小編就為大家分享一篇關(guān)于Python逐行讀取文件中內(nèi)容的簡(jiǎn)單方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • pycharm社區(qū)版安裝django并創(chuàng)建一個(gè)簡(jiǎn)單項(xiàng)目的全過程

    pycharm社區(qū)版安裝django并創(chuàng)建一個(gè)簡(jiǎn)單項(xiàng)目的全過程

    社區(qū)版的pycharm跟專業(yè)版的pycharm應(yīng)用差別還是不太大,下面這篇文章主要給大家介紹了關(guān)于pycharm社區(qū)版安裝django并創(chuàng)建一個(gè)簡(jiǎn)單項(xiàng)目的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05

最新評(píng)論