詳解Python的Django框架中inclusion_tag的使用
另外一類常用的模板標簽是通過渲染 其他 模板顯示數(shù)據(jù)的。 比如說,Django的后臺管理界面,它使用了自定義的模板標簽來顯示新增/編輯表單頁面下部的按鈕。 那些按鈕看起來總是一樣的,但是鏈接卻隨著所編輯的對象的不同而改變。 這就是一個使用小模板很好的例子,這些小模板就是當前對象的詳細信息。
這些排序標簽被稱為 包含標簽 。如何寫包含標簽最好通過舉例來說明。 讓我們來寫一個能夠產(chǎn)生指定作者對象的書籍清單的標簽。 我們將這樣利用標簽:
{% books_for_author author %}
結(jié)果將會像下面這樣:
<ul> <li>The Cat In The Hat</li> <li>Hop On Pop</li> <li>Green Eggs And Ham</li> </ul>
首先,我們定義一個函數(shù),通過給定的參數(shù)生成一個字典形式的結(jié)果。 需要注意的是,我們只需要返回字典類型的結(jié)果就行了,不需要返回更復雜的東西。 這將被用來作為模板片段的內(nèi)容:
def books_for_author(author): books = Book.objects.filter(authors__id=author.id) return {'books': books}
接下來,我們創(chuàng)建用于渲染標簽輸出的模板。 在我們的例子中,模板很簡單:
<ul> {% for book in books %} <li>{{ book.title }}</li> {% endfor %} </ul>
最后,我們通過對一個 Library 對象使用 inclusion_tag() 方法來創(chuàng)建并注冊這個包含標簽。
在我們的例子中,如果先前的模板在 polls/result_snippet.html 文件中,那么我們這樣注冊標簽:
register.inclusion_tag('book_snippet.html')(books_for_author)
Python 2.4裝飾器語法也能正常工作,所以我們可以這樣寫:
@register.inclusion_tag('book_snippet.html') def books_for_author(author): # ...
有時候,你的包含標簽需要訪問父模板的context。 為了解決這個問題,Django為包含標簽提供了一個 takes_context 選項。 如果你在創(chuàng)建模板標簽時,指明了這個選項,這個標簽就不需要參數(shù),并且下面的Python函數(shù)會帶一個參數(shù): 就是當這個標簽被調(diào)用時的模板context。
例如,你正在寫一個包含標簽,該標簽包含有指向主頁的 home_link 和 home_title 變量。 Python函數(shù)會像這樣:
@register.inclusion_tag('link.html', takes_context=True) def jump_link(context): return { 'link': context['home_link'], 'title': context['home_title'], }
(注意函數(shù)的第一個參數(shù) 必須 是 context 。)
模板 link.html 可能包含下面的東西:
Jump directly to <a href="{{ link }}">{{ title }}</a>.
然后您想使用自定義標簽時,就可以加載它的庫,然后不帶參數(shù)地調(diào)用它,就像這樣:
{% jump_link %}
相關(guān)文章
python神經(jīng)網(wǎng)絡(luò)slim常用函數(shù)訓練保存模型
這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)使用slim函數(shù)進行模型的訓練及保存模型示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05Python中的time模塊與datetime模塊用法總結(jié)
Python中內(nèi)置的各項時間日期函數(shù)幾乎都來自于time和datetime這兩個模塊,下面整理了Python中的time模塊與datetime模塊用法總結(jié),需要的朋友可以參考下2016-06-06pycharm社區(qū)版安裝django并創(chuàng)建一個簡單項目的全過程
社區(qū)版的pycharm跟專業(yè)版的pycharm應用差別還是不太大,下面這篇文章主要給大家介紹了關(guān)于pycharm社區(qū)版安裝django并創(chuàng)建一個簡單項目的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-05-05