组合模板Django

时间:2014-07-29 07:42:31

标签: django python-3.x

创建模块化模板的最佳方法是什么?

例如,如果我有这样的事情:

#base file:
{header}
{block content}
{footer}

#main file:
{extends base}
{block content definition}

#product file:
{extends base}
{block content definition}

这是我所理解的django方式 - 填补空白。

现在,我的问题是如果我需要这样的页面:

{header}
{main}
{product}
{footer}

基本上,main和产品都在基本文件中。我可以尝试深度继承(具有main的页面,然后连续加载产品),但这不起作用,因为文件都定义了内容',这在Django中是不可能的

1 个答案:

答案 0 :(得分:1)

你需要做两个模板“_main.html”和“_product.html”,它们不会扩展基础,只是它们自己的内容。

之后,您可以通过包含标记https://docs.djangoproject.com/en/dev/ref/templates/builtins/#include

来使用它们
#main.html file:
{% extends 'base.html' %}
{% block content %}
    {% include '_main.html' %}
{% endblock %}

#product.html file:
{% extends 'base.html' %}
{% block content %}
    {% include '_product.html' %}
{% endblock %}

#and what you want:
{% extends 'base.html' %}
{% block content %}
    {% include '_main.html' %}
    {% include '_product.html' %}
{% endblock %}
{% block footer %}
{% endblock %}