2013-05-02 59 views
1

在Django模板,可以使用with標籤引入一個新的命名變量上下文:Django的模板替代`with`標籤

{% with total=business.employees.count %} 
    {{ total }} employee{{ total|pluralize }} 
{% endwith %} 

我發現自己經常用它來使重命名變量我可以包括可重複使用的模板:

{% with user_list=request.user.friends %} 
    {% include '_user_list.html' %} 
{% endwith %} 

有沒有辦法引進的背景下,一個新的變量,而無需使用with標籤?我正在想象一個標籤,例如set,您可以稱其爲{% set user_list=request.user.friends %},然後不需要使用{% endset %}標籤關閉它。這與功能中的{% trans "This is the title" as the_title %}類似。

如果沒有辦法做到這一點,爲什麼這不是一個好的/ pythonic/Django的做事方式有什麼原因?

回答

2

如果你看include template tag,你會看到,你可以分配和傳遞變量在標籤內的模板:

你可以通過額外的上下文模板使用關鍵字參數:

{% include "name_snippet.html" with person="Jane" greeting="Hello" %} 
+0

這很好。我不知道我是如何錯過這一點的。感謝您指出這一點。 – 2013-05-02 10:46:16

+0

是的,我認爲這是一個新功能(可能> = 1.3),但非常有用 – 2013-05-02 10:46:49