为什么 Django 消息标签框不起作用?

Why does the Django message tags boxs is not working?

我的消息标签有问题。 所以我有一些发送短信的小应用程序。

当我按下提交按钮和我的网页时,如果短信发送正确,屏幕上会打印 message.success。(成功消息工作正常。文本和绿色显示正确)但是如果没有发送消息,打印了一个message.error,但是只打印了文本,没有打印红色框(这不好,我也想打印红色框)。我在网上搜索了答案,但没有找到 anything.THanks 寻求帮助

views.py

 try:
            sms = Client.messages.create(
                from_="+14509001443",
                body=mess,
                to=number
            )
            send = sms.sid
            print("DOne")
            form.instance.author = request.user
            form.save()
            messages.success(request, f'Votre message a bien été envoyé!')
            return redirect("sms-home")
        except:
            print("error")
            messages.error(request, f'Votre message na pas été envoyé!')
            return redirect("sms-home")

home.html

{% extends "sms/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>

{% if messages %}
{% for message in messages %}
<div class="alert alert-{{ message.tags }}">
    {{ message }}
</div>
{% endfor %}
{% endif %}


<div>
    <form method="POST">
        {% csrf_token %}
        {{ form|crispy }}
        <button class="btn btn-outline-info" type="submit" value="Save">SEND</button>
    </form>
</div>


</body>
</html>
{% endblock content %}

Bootstrap的alert class是alert-danger,我很确定django的错误标签是error。因此,您的警报 div 正在使用 classes "alert alert-error" 呈现,它与定义的任何样式都不匹配。

要解决这个问题,有几种选择:

  1. 生成带有标签 'danger' 的通用消息。
  2. 自定义您的 bootstrap 样式,以便像处理警报危险一样处理警报错误
  3. messages.error 调用添加 'danger' 作为 extra_tag,然后处理模板中多个标签的可能性。

实际上,如果您已经需要处理模板中多个标签的可能性,我不会感到惊讶。