有什麼方法可以使用Django的模板系統來渲染模板文件並返回三個離散對象嗎?單個Django模板可能呈現給多個對象嗎?
使用案例:我正在製作一個電子郵件,它將根據一些請求參數進行呈現。每封電子郵件由a)主題,b)純文本版本,c)html版本組成。理想情況下,我希望所有這些來自單個模板文件而不是三個單獨的文件,以便於維護。
任何想法?
有什麼方法可以使用Django的模板系統來渲染模板文件並返回三個離散對象嗎?單個Django模板可能呈現給多個對象嗎?
使用案例:我正在製作一個電子郵件,它將根據一些請求參數進行呈現。每封電子郵件由a)主題,b)純文本版本,c)html版本組成。理想情況下,我希望所有這些來自單個模板文件而不是三個單獨的文件,以便於維護。
任何想法?
我會使用render_to_string,傳入要渲染的部分的參數。這將允許您一次使用一個模板並渲染模板的一部分。
from django.template.loader import render_to_string
subject = render_to_string('the-template.html',
{'section': 'subject', 'subject': 'Foo bar baz'})
plain_text = render_to_string('the-template.html',
{'section': 'text', 'text': 'Some text'})
html = render_to_string('the-template.html',
{'section': 'html', 'html': '<p>Some html</p>'})
#the-template.html
{% if section == 'subject' %}
{{ subject }}
{% elif section == 'text' %}
{{ plain_text }}
{% else %}
<h1>A headline, etc.</h1>
{{ html }}
{% endif %}
您還可以將傳入請求中所需的任何值傳遞給上下文中的模板。
您可以使用Django的模板引擎在您的模板中包含條件循環?雖然在你的情況下,模板繼承系統可能畢竟是正確的工具,因爲它很好地分離了不同的用例。 – 2013-02-15 18:31:15
您可以檢出'include'標籤;或嘗試創建自定義標籤;我很久以前在django工作過;現在不記得了... – mshsayem 2013-02-15 18:32:59