0

有什么方法可以为块设置默认内容吗?

可以这样工作的东西:

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

谢谢

4

2 回答 2

2

你可以用普通的Template Inheritance

在父(基础)模板中定义一个块作为默认数据的容器。

现在,当你扩展这个模板时,你可以决定用这个块做什么。如果您不覆盖该块,则会显示默认数据。否则,将显示您继承的模板中的块数据。

最后{{ block.super }},您可以选择混合基础模板和继承模板的内容:

如果您想添加到父块的内容而不是完全覆盖它,这很有用。

于 2012-05-01T08:22:41.463 回答
0

检查 django/template/defaulttags.py 中内置标签的实现,例如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 %}
于 2012-05-01T05:12:37.940 回答