Django 如何使用两个不同的文件扩展base.html?

Django 如何使用两个不同的文件扩展base.html?,django,django-templates,Django,Django Templates,我正在编写一个应用程序,用户可以在其中选择一个用于数据分析的工具,并在主页上的面板中打开它。是否可以使用django“扩展”并在不同的文件中定义每个工具 我挣扎的最简单例子如下: {% extends "base.html" %} {% block left_panel %} {% include "left1.html" %} {% endblock content%} {% block right_panel %} {% include "right1.html" %}

我正在编写一个应用程序,用户可以在其中选择一个用于数据分析的工具,并在主页上的面板中打开它。是否可以使用django“扩展”并在不同的文件中定义每个工具

我挣扎的最简单例子如下:

{% extends "base.html" %} {% block left_panel %} {% include "left1.html" %} {% endblock content%} {% block right_panel %} {% include "right1.html" %} {% endblock %} {% block left_panel %} {% if left_tool == "tool1" %} {% include "left1.html" %} {% elif left_tool == "tool2" %}} {% include "left2.html" %} etc ... {% else %} {% include "left10.html" %} {% endif %} {% endblock content%} base.html


{%block left_panel%}
左闭塞
{%endblock内容%}
{%block right_panel%}
右闭塞
{%endblock%}
以及左面板和右面板工具示例:

left1.html

{%extends“base.html”%}
{%block left_panel%}
测试左1

{%endblock%}
right1.html

{%extends“base.html”%}
{%block right_panel%}
测试权限1

{%endblock%}

有没有一种方法可以在覆盖两个块的情况下呈现base.html?

我认为实现您的需求的最佳方法是创建一个扩展base.html并包含left1.html和right1.html的新模板。大概是这样的:

{% extends "base.html" %} {% block left_panel %} {% include "left1.html" %} {% endblock content%} {% block right_panel %} {% include "right1.html" %} {% endblock %} {% block left_panel %} {% if left_tool == "tool1" %} {% include "left1.html" %} {% elif left_tool == "tool2" %}} {% include "left2.html" %} etc ... {% else %} {% include "left10.html" %} {% endif %} {% endblock content%}
您将对右侧面板执行相同的操作。当然,上面的内容有点幼稚,而且绝对不枯燥--例如,您可以生成要包含在视图中的模板的名称,并将其直接传递给模板,或者使用自定义节点等。

我认为实现您的需求的最佳方法是创建一个扩展base.html并包括left1.html和right1.html的新模板。大概是这样的:

{% extends "base.html" %} {% block left_panel %} {% include "left1.html" %} {% endblock content%} {% block right_panel %} {% include "right1.html" %} {% endblock %} {% block left_panel %} {% if left_tool == "tool1" %} {% include "left1.html" %} {% elif left_tool == "tool2" %}} {% include "left2.html" %} etc ... {% else %} {% include "left10.html" %} {% endif %} {% endblock content%}
您将对右侧面板执行相同的操作。当然,上面的内容有点幼稚,而且绝对不枯燥——例如,您可以生成要包含在视图中的模板的名称并将其直接传递给模板,或者使用自定义节点等。

问题是每个面板有10种不同的工具。这意味着按照你的建议,有100种不同的模板。问题是每个面板有10种不同的工具。这意味着按照你的建议有100个不同的模板。