[英]Error message not working as expected in Django
I am trying to display a message on order creation success or failure.我正在尝试显示有关订单创建成功或失败的消息。 For messages.success(request, "My message")
it is working as expected.对于messages.success(request, "My message")
它按预期工作。 But for messages.error(request, "My message")
it is not as expected.但是对于messages.error(request, "My message")
它并不像预期的那样。 I read the django messages framework docs, but no use.我阅读了 django 消息框架文档,但没有用。 Can someone tell me why is this happening谁能告诉我为什么会这样
Failed Message:失败消息: This is supposed to be red alert if I am not wrong.如果我没记错的话,这应该是红色警报。 Here's my html file.这是我的 html 文件。
base.html底座.html
<main role="main" class="container" >
{% if messages %}
{% for message in messages %}
<div class="alert alert-{{ message.tags }}">
{{ message }}
</div>
{% endfor %}
{% endif %}
views.py视图.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'))
If the problem is alert-error
not working you can use this after have the import statement of your message:如果问题是alert-error
不起作用,您可以在收到消息的导入语句后使用它:
from django.contrib.messages import constants as messages
MESSAGE_TAGS = {
messages.ERROR: 'danger'
}
Reference ->参考->
https://docs.djangoproject.com/en/3.0/ref/contrib/messages/#message-tags https://docs.djangoproject.com/en/3.0/ref/contrib/messages/#message-tags
@Sowjanya R Bhat @Sowjanya R 巴特
The method you suggest can be hardcoded but I need to know, why isn't it implementing red alert my default.您建议的方法可以进行硬编码,但我需要知道,为什么它不实现我的默认红色警报。 Your suggestion works however但是,您的建议有效
<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'))
just use messages.warning
instead, it would at least show a color.只需使用messages.warning
代替,它至少会显示一种颜色。
This is because alert-error
is not a bootstrap class.这是因为alert-error
不是引导程序 class。 The according class is named alert-danger
.相应的 class 被命名为alert-danger
。
Generally the tags line up nicely between bootstrap and django, this is why your code works.通常,标签在引导程序和 django 之间排列得很好,这就是您的代码有效的原因。 But as you see "error".= "danger".但正如你看到的“错误”。=“危险”。
To fix the issue replace要解决问题,请更换
<div class="alert alert-{{ message.tags }}">
{{ message }}
</div>
with和
{% 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.