Django-Templates:在extend和include之间有没有中间地带?

gupuwyp2  于 2023-04-07  发布在  Go
关注(0)|答案(1)|浏览(114)

我正在用Django开发一个网页,我遇到了在网页中有某些重复出现元素的问题。例如,包含菜单的基本布局 Package 了网页的其余部分,因此可以通过extend外包。同样,如果我有一个重复出现元素,它完全被当前网页 Package ,而不改变它内部的html,可以通过使用include实现。(例如特定按钮)。
然而,我有第三类,我不知道如何外包冗余信息:
假设我有一个卡片设计,它总是包含一个div,一个头部,一个图像和内容。我想重复使用这个设计来显示不同的内容,我在同一个页面上也有不同的卡片,我该怎么做?
这真的是要走的路吗:
card_x.html

{% extend 'card_template.html' %}
{% block title %} Title x{% endblock title %}
{% content %}
Content x
{% endblock content %}
...

card_template.html

<div>
    <h1>{% block title %} {% endblock title %}</h1>
    <div>
        {% content %}
        {% endblock content %}
    </div>
</div>

mainpage.html

{% include 'card_1.html' %}
{% include 'card_2.html' %}
{% include 'card_3.html' %}

我觉得我想把内容x放在主页里面,但是在这种方法中,我必须把它放在单独的文件中(这也导致了很多html文档,而不是每个页面一个,每个模板一个)。我在寻找这样的东西,我猜是由include_with标签组成的:
mainpage.html

{% inlude_with 'card_template.html' %}
    {% block title %} Title 1{% endblock title %}
    {% content %}
        Content 1
    {% endblock content %}
{% endinclude_with %}
{% inlude_with 'card_template.html' %}
    {% block title %} Title 2{% endblock title %}
    {% content %}
        Content 2
    {% endblock content %}
{% endinclude_with %}
{% inlude_with 'card_template.html' %}
    {% block title %} Title 3{% endblock title %}
    {% content %}
        Content 3
    {% endblock content %}
{% endinclude_with %}

有这样的事情吗?如果没有,你会如何处理这个问题?我的方法有缺陷吗?我感谢任何输入!

nxowjjhe

nxowjjhe1#

我不确定我是否完全理解,但以下内容可能是您正在寻找的内容:

# /includes/card.html
    <div>
        <h1>{{ title }}</h1>
        <div>
            {{ content }}
        </div>
    </div>

然后在您的模板中:

{% include 'includes/card.html' with title='Title 1' content='Content goes here' %}

相关问题