是否有任何方法可以为块提供默认内容?
可以这样工作的东西:
if extended:
show content from template extending it
else:
show this default content
由于
答案 0 :(得分:2)
您可以使用普通Template Inheritance
将父(基础)模板中的块定义为默认数据的容器。
现在,当您扩展此模板时,您可以决定该块的内容。 如果不覆盖块,则显示默认数据。否则,将显示继承模板中块的数据。
最后{{ block.super }}
为您提供了混合基础和继承模板内容的选项:
如果有用,这很有用 您想要添加到父块的内容而不是 完全压倒它。
答案 1 :(得分:0)
检查django / template / defaulttags.py中的builtins标记的实现,例如autoescape
# in autoescape()
# get content from current autoecape to pairing endautoescape
nodelist = parser.parse(('endautoescape',))
# in AutoEsacpeControlNode.render()
# render inner content
output = self.nodelist.render(context)
因此,您在自定义标记中写下以下内容
def render(self, context):
...
if extend:
return default_content
else:
return self.nodelist.render(context)
通常if... else
也可以做到这一点......:
{% if extended %}
...
{% else %}
{{ default }}
{% endif %}