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

时间:2016-03-18 15:03:48

标签: python django

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

以下是解决方案suggested here和文档:

中的改编代码
{% for message in messages.success %}
    {% if 'success' in message.tags %}
    <div class="success-message">{{ message }}</div>
    {% endif %}
{% endfor %}

这没有任何结果。如果我使用较少歧视的东西,它会使我的信息完全正常:

{% for message in messages %}
    <p>{{ message }}</p>
{% endfor %}

视图会创建如下消息:

messages.success(request, "here's a sample success message") 

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

3 个答案:

答案 0 :(得分:2)

问题在于您尝试迭代messages.success,而不是列表。而是迭代messages本身,并检查是否成功:

{% for message in messages %}
    {% if message.level == DEFAULT_MESSAGE_LEVELS.SUCCESS %}
    <div class="success-message">{{ message }}</div>
    {% endif %}
{% endfor %}

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

{% for message in messages %}
    {% if 'success' in message.tags %}
    <div class="success-message">{{ message }}</div>
    {% endif %}
{% endfor %}

答案 1 :(得分:0)

您应该使用== - 运算符代替in。并且无需使用messages.success

{% for message in messages %}
    {% if 'success' == message.tags %}
    <div class="success-message">{{ message }}</div>
    {% endif %}
{% endfor %}

答案 2 :(得分:0)

Message.success不可迭代。这就是为什么你没有得到消息。您还可以在视图中使用get_success_message方法来仅呈现成功消息。