extends标签的默认内容 - django

时间:2012-05-01 04:51:48

标签: django django-templates

是否有任何方法可以为块提供默认内容?

可以这样工作的东西:

if extended:
   show content from template extending it
else:
   show this default content

由于

2 个答案:

答案 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 %}