[英]Try/except not working as expected: “Except” error message is appended to passing result
[英]Error message not working as expected in Django
我正在尝试显示有关订单创建成功或失败的消息。 对于messages.success(request, "My message")
它按预期工作。 但是对于messages.error(request, "My message")
它并不像预期的那样。 我阅读了 django 消息框架文档,但没有用。 谁能告诉我为什么会这样
失败消息: 如果我没记错的话,这应该是红色警报。 这是我的 html 文件。
底座.html
<main role="main" class="container" >
{% if messages %}
{% for message in messages %}
<div class="alert alert-{{ message.tags }}">
{{ message }}
</div>
{% endfor %}
{% endif %}
视图.py
if verify:
if response_dict['RESPCODE'] == '01':
messages.success(
request, "Thank you for ordering! Your items will be delivered soon")
return redirect(reverse('update-records', kwargs={'order_id': order_id}))
else:
messages.error(
request, "Your order could not be placed, here are the details: " + response_dict['RESPMSG'])
return redirect(reverse('profile-page'))
如果问题是alert-error
不起作用,您可以在收到消息的导入语句后使用它:
from django.contrib.messages import constants as messages
MESSAGE_TAGS = {
messages.ERROR: 'danger'
}
参考->
https://docs.djangoproject.com/en/3.0/ref/contrib/messages/#message-tags
@Sowjanya R 巴特
您建议的方法可以进行硬编码,但我需要知道,为什么它不实现我的默认红色警报。 但是,您的建议有效
<main role="main" class="container" >
{% if messages %}
{% for message in messages %}
{% if message.tags == "error"%}
<div class="alert alert-danger">
{{ message }}
</div>
{% else %}
<div class="alert alert-success">
{{ message }}
</div>
{% endif %}
{% endfor %}
{% endif %}
In your HTML:
<script>
setTimeout(function () {
$('#flash').fadeOut('fast');
},5000);
</script>
<div id="flash">
{% if messages %}
{% for message in messages %}
<div class="alert alert-{{ message.tags}} m-0" role="alert">
<strong>{{ message }}</strong>
</div>
{% endfor %}
{% endif %}
</div>
in django settings.py:
from django.contrib.messages import constants as messages
MESSAGE_TAGS = {
messages.ERROR: 'danger'
}
in django views:
from django.contrib import messages
if verify:
if response_dict['RESPCODE'] == '01':
messages.success(
request, "Thank you for ordering! Your items will be delivered soon")
return redirect(reverse('update-records', kwargs={'order_id': order_id}))
else:
messages.error(
request, "Your order could not be placed, here are the details: " + response_dict['RESPMSG'])
return redirect(reverse('profile-page'))
只需使用messages.warning
代替,它至少会显示一种颜色。
这是因为alert-error
不是引导程序 class。 相应的 class 被命名为alert-danger
。
通常,标签在引导程序和 django 之间排列得很好,这就是您的代码有效的原因。 但正如你看到的“错误”。=“危险”。
要解决问题,请更换
<div class="alert alert-{{ message.tags }}">
{{ message }}
</div>
和
{% if message.tags == "error" %}
<div class="alert alert-danger">
{{ message }}
</div>
{% else %}
<div class="alert alert-{{ message.tags }}">
{{ message }}
</div>
{% endif %}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.