Python 包括来自Jinja模板的块

Python 包括来自Jinja模板的块,python,jinja2,Python,Jinja2,我希望包含来自模板的块,而不是宏,因为许多模板将包含来自许多其他模板的内容,所以扩展不是一个选项 我已经阅读了很多关于这方面的答案,包括,但是用例似乎总是不同的。我怀疑这是不可能做到的 template1.html {% block description %} <p> Here is a description </p> {% endblock %} {% from 'template1.html' import description %} <- doe

我希望包含来自模板的块,而不是宏,因为许多模板将包含来自许多其他模板的内容,所以
扩展
不是一个选项

我已经阅读了很多关于这方面的答案,包括,但是用例似乎总是不同的。我怀疑这是不可能做到的

template1.html

{% block description %}
   <p> Here is a description </p>
{% endblock %}
{% from 'template1.html' import description %} <- doesnt work

你有两个选择

  • 使用宏,这听起来像是你不想做的事情
  • 使用模板过滤器 假设您使用的是烧瓶,这非常简单:

    @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') %}
    

    我希望我能只用Jinja来做这件事,但是谢谢你聪明的建议。