4

テンプレートを作成するとき、私は通常、3 つの個別の部分 (ヘッダー、本文、フッター) を持ち、それらを組み合わせて単一の文字列を Web サーバー (この場合は CherryPy) に渡します。

私の最初のアプローチは次のとおりです...

from jinja2 import Environment, FileSystemLoader
env  = Environment(loader=FileSystemLoader(''))

tmpl = env.get_template('Body.html')
page_body = tmpl.render()

tmpl = env.get_template('Header.html')
page_header = tmpl.render()

tmpl = env.get_template('Footer.html')
page_footer = tmpl.render()

page_code = page_header + page_body + page_footer

しかし、これには反復的なコードが含まれているため、次のアプローチは...

def render_template(html_file):
    from jinja2 import Environment, FileSystemLoader
    env  = Environment(loader=FileSystemLoader(''))
    tmpl = env.get_template(html_file)
    return tmpl.render()

page_header = render_template('Header.html')
page_body   = render_template('Body.html')
page_footer = render_template('Footer.html)

ただし、これは各パーツが独自の環境で作成されることを意味します。これが問題になる可能性はありますか? このアプローチには他に欠点はありますか?

子テンプレート アプローチよりも 3 部構成のアプローチを選択したのは、より柔軟な (そして従うのが簡単である) と思うからですが、間違っているかもしれません。ヘッダー、ボディ、フッターの各ブロックを使用したほうがよいと私に納得させたい人はいますか?

アドバイスをいただければ幸いです。アラン

4

1 に答える 1

11

テンプレートの継承を行いたくない場合は、検討しましたincludeか?

{% include 'header.html' %}
    Body
{% include 'footer.html' %}
于 2010-06-16T11:33:56.813 に答える