gpt4 book ai didi

python - 选择性覆盖 Jinja2

转载 作者:太空宇宙 更新时间:2023-11-04 01:03:01 25 4
gpt4 key购买 nike

{% block very_outer_block %}
{%block outer_block%}
<p> "howdy wassup up" </p>
<p>{% block inner_block%} "I want to be overridden" {%endblock%}</p>
{%endblock%}
{%endblock%}

是否可以在 outer_block 上调用 super() 但覆盖 inner_block

如果 inner_block 被覆盖为 "Im another text" 则输出将是例如:

<p> "howdy wassup" </p>
<p> "Im another text" </p>

或者如果我们将 inner_block 覆盖为 "Overridden yet again"
所以它将是:

<p> "howdy wassup" </p>
<p> "Overridden yet again" </p>

我的问题是,如果我们在 block 中定义 block ,我们可以在 outer_block 上调用 super() 而覆盖 inner_block 吗?

最佳答案

你可以像这样覆盖内部 block ;该 block 是否嵌套在其他 block 中并不重要。只要你不覆盖那些(如果你不重新定义它们会使内部 block 不存在),它就可以正常工作:

>>> base = '''
{% block very_outer_block %}
{%block outer_block%}
<p> "howdy wassup up" </p>
<p>{% block inner_block%} "I want to be overridden" {%endblock%}</p>
{%endblock%}
{%endblock%}
'''
>>> test = '''
{% extends 'base' %}
{% block inner_block %}Overriding inner only{% endblock %}
'''
>>> env = jinja2.Environment(loader=jinja2.DictLoader({ 'base': base, 'test': test }))
>>> print(env.get_template('test').render().strip('\n'))

<p> "howdy wassup up" </p>
<p>Overriding inner only</p>

关于python - 选择性覆盖 Jinja2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31957511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com