【发布时间】:2011-02-04 05:45:46
【问题描述】:
我有一个模板,它显示带有指向我网站其他部分的超链接的对象元素。我有另一个函数可以显示同一对象的过去版本。在这个显示中,我不想要超链接。
我假设我无法动态关闭超链接,因此我将两个版本都包含在同一个模板中。我使用 if 语句来显示超链接版本或纯文本版本。我更喜欢将它们保留在同一个模板中,因为如果我需要更改其中一个的格式,可以很容易地将其应用到另一个模板中。
模板扩展了 framework.html。框架有一个面包屑系统,它扩展了 base.html。 Base 有一个简单的顶部菜单系统。
所以这是我的困境。查看标准超链接数据时,我想查看顶部菜单和面包屑。但是在查看过去版本的纯文本数据时,我只想要数据,没有菜单,没有面包屑。鉴于我目前的设计,我不确定这是否可能。我尝试让框架继承主模板,以便我可以选择调用框架(并显示面包屑)或模板本身,从而跳过面包屑,但我希望 framework.html 也可用于其他模板。如果 framework.html 扩展了特定模板,我将无法在其他模板中显示它。
我尝试编写一个 if 语句,该语句将分别显示 base.html 和 framework.html 中的 top_menu 块和 nav_menu 块。这将覆盖它们的块,并允许我根据 if 关闭这些元素。不幸的是,它似乎不是有条件的。如果块元素完全在模板中,并且被 if 包围,我会丢失菜单。
我考虑过使用 {% include %} 来获取面包屑和拆分的顶部菜单。不过,在这种情况下,我将不得不一直包含它。不再继承。考虑到我的要求,这是最佳选择吗?
【问题讨论】:
标签: django inheritance templates conditional