gpt4 book ai didi

django - 可重用的应用程序,仅在未定义时定义 block

转载 作者:行者123 更新时间:2023-12-04 04:46:09 24 4
gpt4 key购买 nike

我的应用程序使用 django 的消息中间件。

在这个应用程序的基本模板中,我有:

{% extends "base.html" %}

{% block messages %}
<ul class="messagelist">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}_message"{% endif %}>{{ message|capfirst }}</li>
{% endfor %}
</ul>
{% endblock messages %}

问题是这会覆盖站点范围 base.html 中的“消息”块。 .

因此,如果我在站点库中定义了样式,如本例所示:
{% block messages %}
{% if messages %}
<ul class="messagelist ui-state-highlight">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}_message"{% endif %}>{{ message|capfirst }}</li>
{% endfor %}
</ul>
{% endif %}
{% endblock messages %}

我的“可重用”模板将删除 ui-state-highlight ...

只有在未定义的情况下,我才能在我的应用程序的基础中定义块消息吗?

最佳答案

如果我按照您正在尝试执行的操作 - 编写一个应用程序,在需要时为该块提供内容,但如果可用,请使用其父模板的块 - 我认为这应该这样做:

{% extends "base.html" %}
{% block messages %}
{% if block.super %}
{{ block.super }}
{% else %}
<ul class="messagelist">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}_message"{% endif %}>{{ message|capfirst }}</li>
{% endfor %}
</ul>
{% endif %}
{% endblock %}

不过,这是未经测试的 - 可能是 block.super工作奇怪。它不会区分没有定义 messages 的父模板块并定义一个空块。

关于django - 可重用的应用程序,仅在未定义时定义 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18154548/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com