有什么方法可以为块设置默认内容吗?
可以这样工作的东西:
if extended:
show content from template extending it
else:
show this default content
谢谢
有什么方法可以为块设置默认内容吗?
可以这样工作的东西:
if extended:
show content from template extending it
else:
show this default content
谢谢
你可以用普通的Template Inheritance
在父(基础)模板中定义一个块作为默认数据的容器。
现在,当你扩展这个模板时,你可以决定用这个块做什么。如果您不覆盖该块,则会显示默认数据。否则,将显示您继承的模板中的块数据。
最后{{ block.super }}
,您可以选择混合基础模板和继承模板的内容:
如果您想添加到父块的内容而不是完全覆盖它,这很有用。
检查 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 %}