有没有任何方法让块的默认内容?扩展标签的默认内容 - django
东西会像这样工作:
if extended:
show content from template extending it
else:
show this default content
感谢
有没有任何方法让块的默认内容?扩展标签的默认内容 - django
东西会像这样工作:
if extended:
show content from template extending it
else:
show this default content
感谢
可以使用普通Template Inheritance
在父定义块(基地)模板作为默认数据的容器。
现在,当您扩展此模板时,您可以决定如何使用此块。 如果您不覆盖该块,则显示默认数据。否则,将显示继承模板的块中的数据。
最后{{ block.super }}
为您提供了从基本内容和继承的模板混合选项:如果 要添加到父块的内容,而不是 完全覆盖它
这是非常有用。
检查Django的/模板/ 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 %}