如何覆盖Django基本模板

如何覆盖Django基本模板,django,django-templates,Django,Django Templates,我需要在Django应用程序中扩展一个页面的基本模板,但是我需要从这个新页面中排除一些HTML元素。移除它们的最佳方法是什么?我只是用JQuery删除元素吗?创建没有这些元素的基本模板。使用这些元素创建子模板。继承来自此子模板和此特定页面的所有页面-来自基本模板 {# base template #} {% block override_me %} <elem1 /><elem2 /> {% endblock %} {# child template #} {% blo

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

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

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

{# child template #}
{% block override_me %}{% endblock %}
另一种方法是将这些元素放入基模板中的块中

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

{# child template #}
{% block override_me %}{% endblock %}
{#基本模板#}
{%block override_me%}
{%endblock%}
{#子模板}
{%block override_me%}{%endblock%}

您可以使用模板块来实现这一点。例如,在base.html中,将html元素环绕在命名块中:

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

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

这不一定是个坏主意。如果必须在多个子模板中重新创建代码,以避免将其放入base.html中,则违反了DRY原则。使用块更好。@George Cummins使用JS删除元素不一定是个坏主意吗?哎哟。请说明DRY被违反的地方(请注意,例如,在中使用了这种方法)。显然,我不清楚您的“坏主意”评论针对的是原始问题的哪一部分。删除子模板中的元素不是问题,但我同意通过JS删除元素并不理想。如果你重新修改答案的第一段,我可以删除我的反对票。@George Cummins,我认为我的第一个变体更好,如果你需要删除基本模板的某些元素,这是你的模板组织出现问题的第一个迹象。