如何使Django嵌套模板更好的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"one_answers"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" %}

最新更新