繁体   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