我正在使用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
答案 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方法来仅呈现成功消息。