我想从模板而不是宏中包含块,因为许多模板将包含来自许多其他模板的内容,因此extends
不是一个选项。
我已经阅读了很多关于此的答案,包括blocks in included files,但用例似乎总是不同。我怀疑这不可能做到。
template1.html
{% block description %}
<p> Here is a description </p>
{% endblock %}
并在template2.html
{% from 'template1.html' import description %} <- doesnt work
答案 0 :(得分:3)
这里有两种选择。
假设您正在使用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') %}