![](/img/trans.png)
[英]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.