如何制作 Django 嵌套模板以获得更好的 SRP

How to make Django Nested Templates for better SRP

我正在尝试为我的网站制作一个基本模板。理想情况下它看起来像这样

{% block navigationbar %}{% endblock %}
{% block content %}{% endblock %}
{% block footer %}{% endblock %}

这样我就可以拥有单独的 navigationbar.html 和 footer.html 文件。我想展示的所有视图都将这样:

{% extends 'portfolio/base.html' %}
{% block content %}
// View Code here
{% endblock %}

任何实现此目的的方法。我意识到我不能进行多次扩展,并且尝试了不同的嵌套组合,但到目前为止对我没有任何效果。

所以理想的结果是 4 个文件。对于主页:

  1. NavigationBar.html - 保存导航条码
  2. Footer.html - 保存页脚代码
  3. Base.html - 包含导航栏、页脚和内容
  4. Home.html - 保留主页的内容,但在加载时用户会看到导航栏和页脚。

您可以使用 include 加载模板并使用当前上下文呈现它。这是一种在模板中“包含”其他模板的方法。

此示例包含您模板上的模板 "NavigationBar.html" 和 "Footer.html" 的内容:

{% extends 'portfolio/base.html' %}

{% block content %}
    {% include "NavigationBar.html" %}

    // View Code here

    {% include "Footer.html" %}
{% endblock %}

您还可以使用参数将其他上下文传递给模板:

{% include "NavigationBar.html" with breadcrumb="home > wherever" %}