Python 选择性超控金甲2号

Python 选择性超控金甲2号,python,flask,jinja2,Python,Flask,Jinja2,或者如果我们要将内部块重写为“再次重写” 所以它将是: <p> "howdy wassup" </p> <p> "Im another text" </p> “你好” “再次被覆盖” 我的问题是,如果我们在块中定义块,我们可以在外部块上调用super(),而覆盖内部块?您可以这样覆盖内部块;块是否嵌套在其他块中并不重要。只要不覆盖这些块(如果不重新定义内部块,内部块将不存在),它就可以正常工作: <p> "howdy wassup"

或者如果我们要将
内部块
重写为
“再次重写”

所以它将是:

<p> "howdy wassup" </p>
<p> "Im another text" </p>
“你好”

“再次被覆盖”


我的问题是,如果我们在块中定义块,我们可以在
外部块上调用
super()
,而覆盖
内部块

您可以这样覆盖内部块;块是否嵌套在其他块中并不重要。只要不覆盖这些块(如果不重新定义内部块,内部块将不存在),它就可以正常工作:

<p> "howdy wassup" </p>
<p> "Overridden yet again" </p>
>>base=''
{%block very_outer_block%}
{%block外部_block%}
“你好,我喝多了”

{%block inner_block%}“我想被覆盖”{%endblock%}

{%endblock%} {%endblock%} ''' >>>测试=''' {%extends'基“%” {%block INTERNAL_block%}仅重写内部{%endblock%} ''' >>>env=jinja2.Environment(loader=jinja2.DictLoader({'base':base,'test':test})) >>>打印(环境获取模板('test').render().strip('\n')) “你好,我喝多了”

仅覆盖内部


如果不覆盖外部块,而只覆盖内部块,这应该会起作用,否?@poke否它不会起作用,只会显示内部块。外块实际上是另一块的一部分。让我来编辑这个问题
<p> "howdy wassup" </p>
<p> "Overridden yet again" </p>
>>> 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>