簡體   English   中英

錯誤消息在 Django 中未按預期工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM