如何覆盖Django基本模板

时间:2011-10-14 13:16:44

标签: django

我需要在我的Django应用程序中扩展页面的基本模板,但是我需要从基础中的这个新页面中排除一些HTML元素。删除它们的最佳方法是什么?我只是用JQuery删除元素吗?

2 个答案:

答案 0 :(得分:5)

您可以使用模板块来实现此目的。例如,在base.html中,将命名块中的HTML元素包围起来:

{% block a_unique_name %}<div>This is only relevant in base.html</div>{% endblock %}

只有在没有其他模板覆盖它时,才会使用块中的HTML。您可以在子模板中覆盖它,如下所示:

{% extend base.html %}
{% block a_unique_name %}{% endblock %}

现在将使用子模板中的值,并将覆盖base.html的默认值。

答案 1 :(得分:0)

创建没有这些元素的基本模板。使用这些元素创建子模板。继承此子模板和此特定页面的所有页面 - 来自基本模板。

另一种方法是将这些元素放入基本模板中的块中。

{# base template #}
{% block override_me %}
<elem1 /><elem2 />
{% endblock %}

{# child template #}
{% block override_me %}{% endblock %}