Django 消息传递框架 - 如何仅显示成功消息

Esc*_*her 5 python django

我正在使用 Django 消息传递框架来显示反馈消息。我无法显示成功消息。

以下是来自此处建议的解决方案和文档的改编代码:

{% for message in messages.success %}
    {% if 'success' in message.tags %}
    <div class="success-message">{{ message }}</div>
    {% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

这不会产生任何结果。如果我使用一些不那么歧视的东西,它会让我的消息完美地呈现:

{% for message in messages %}
    <p>{{ message }}</p>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

该视图创建如下消息:

messages.success(request, "here's a sample success message") 
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我正在使用 django 1.9.2

Ste*_*yne 5

问题是您正在尝试迭代messages.success,它不是列表。相反,迭代messages自身,并检查是否成功:

{% for message in messages %}
    {% if message.level == DEFAULT_MESSAGE_LEVELS.SUCCESS %}
    <div class="success-message">{{ message }}</div>
    {% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

事实上,您最初的示例中的唯一问题是尝试迭代messages.success而不是messages. 你的标签检查也应该有效,即使它不是那么“干净”:

{% for message in messages %}
    {% if 'success' in message.tags %}
    <div class="success-message">{{ message }}</div>
    {% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)