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

 大师兄v断水流 发布于 2023-01-08 09:08

我正在编写一个应用程序,用户可以从中选择一种用于数据分析的工具,并在主页面板上打开它.是否可以使用django"extends"并将每个工具定义在不同的文件中?

我最喜欢的最小例子是这样的:

base.html文件

  
{% block left_panel %} left block {% endblock content%}
{% block right_panel %} right block {% endblock %}

和示例left_panel和right_panel工具:

left1.html

{% extends "base.html" %}
{% block left_panel %}

TEST left 1

{% endblock %}

right1.html

{% extends "base.html" %}
{% block right_panel %}

TEST right 1

{% endblock %}

有没有办法渲染base.html,两个块都覆盖?

1 个回答
  • 我相信实现您的要求的最佳方法是创建一个扩展 base.html 的新模板,包括 left1.html和right1.html.像这样的东西:

    {% extends "base.html" %}
    
    {% block left_panel %}
        {% include "left1.html" %}
    {% endblock content%}
    
    {% block right_panel %}
        {% include "right1.html" %}
    {% endblock %}
    
    

    根据OP的评论更新:实际上你只需要一个可配置的模板,而不是100个.假设根据用户选择的工具,你的视图将left_toolright_tool上下文变量传递给你的模板.现在,您可以轻松地执行以下操作:

    {% 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%}
    

    您将使用右侧面板执行相同操作.当然上面有点天真并且绝对不是DRY - 相反,您可以生成要包含在视图中的模板名称并将其直接传递给模板,或者使用自定义节点等.

    2023-01-08 09:12 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有