我的应用使用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
...
任何方式我都可以在我的应用基础中定义阻止消息,只有它没有定义?
答案 0 :(得分:3)
如果我按照您要执行的操作进行操作 - 编写一个应用程序,如果需要,将为块提供内容,但如果可用则使用其父模板的块 - 我认为应该这样做:
{% 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
块和定义空块。