2

多くのテンプレートには他の多くのテンプレートのコンテンツが含まれるため、マクロの代わりにテンプレートのブロックを含めたいと考えています。これextendsはオプションではありません。

ブロックが含まれるファイルを含め、これに関する多くの回答を読みましたが、ユースケースは常に異なるようです。これはできないと思います。

template1.html

{% block description %}
   <p> Here is a description </p>
{% endblock %}

そして、template2.html

{% from 'template1.html' import description %} <- doesnt work
4

1 に答える 1

3

ここには 2 つのオプションがあります。

  1. やりたくないことのように聞こえるマクロを使用します。
  2. template_filter を使用します。

Flask を使用していると仮定すると、これは次のように簡単です。

@app.template_filter('get_block')
def template_filter(block, file):
    html = render_template(file)
    # Then use regex or something to parse
    # or even simple splits (better with named blocks), like...
    content = html.split('{%% block %s %%}'%(block))[-1]
    content = content.split('{%% endblock %%}')[0]
    return content

そしてそれを使用するには:

{% 'description'|get_block('template1.html') %}
于 2013-04-17T13:22:43.397 に答える