如果满足某些条件,如何在django中继承模板?

时间:2014-05-14 15:28:04

标签: python django django-templates

我试图在django中实现以下功能,概念上很好,但是,django模板语言不允许这样做,因为"扩展" templatetag必须在第一行。

{% if some condition %}
    {% extends "parent_template.html "%}
{% else %} 
    {% extends "another_parent_template.html "%}
{% endif %}

对此有任何解决方法吗?90%的继承和未经授权的模板保持不变,为此设置两个不同的模板毫无价值。

1 个答案:

答案 0 :(得分:1)

我认为没有解决方法。但更大的答案是你应该考虑以不同的方式设计你的模板。

如果90%的内容来自parent_template.html,那么扩展该模板不应该是有条件的。一直这样做。如果没有,那么考虑这样设计:

  • 模板A检查some_condition。如果是真的:
    • A包含模板B_some_condition,其范围为parent_template.html
  • 如果错误,
    • 包含模板B_else,它不会扩展任何内容。

通过这种方式,您可以将条件放在使用该模板(A)的任何内容中,而不是将条件放在子模板中,并使条件成为“扩展”。