0

Django のテンプレート システムを使用してテンプレート ファイルをレンダリングし、3 つの個別のオブジェクトを返す方法はありますか?

ユース ケース: いくつかの要求パラメーターに基づいてレンダリングされる電子メールをまとめています。各電子メールは、a) 件名、b) プレーンテキスト バージョン、c) HTML バージョンで構成されます。理想的には、メンテナンスを容易にするために、これらすべてを 3 つの個別のファイルではなく、1 つのテンプレート ファイルから取得したいと考えています。

何か案は?

4

1 に答える 1

2

レンダリングするセクションの引数を渡して、render_to_stringを使用します。これにより、1つのテンプレートを使用して、一度にテンプレートの一部をレンダリングできます。

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 %}

着信リクエストからコンテキスト内のテンプレートに必要な値を渡すこともできます。

于 2013-02-15T18:36:29.157 に答える