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>