Bootstrap / Django错误消息是否没有红色?

时间:2019-03-17 00:02:37

标签: django bootstrap-4

我想在Django应用程序中处理消息。不幸的是,除了错误消息不是红色之外,每种消息类型似乎都能按预期工作。

enter image description here

我的代码非常简单。

views.py

from django.contrib import messages

def generate_test(request):
  messages.info(request, 'TEST')
  messages.success(request, 'TEST')
  messages.warning(request, 'TEST')
  messages.error(request, 'TEST')
  return render(request, 'test.html')

test.html

{% extends "base_generic3.html" %}
{% load static %}
{% block content %}
{% endblock %}

我的base_generic3.html包含许多其他内容,例如jquery和bootstrap-4集成。但是以下部分用于以bootstrap-4样式显示消息:

...
{% if messages %}
{% for message in messages %}
<div class="alert alert-{{ message.tags }} alert-dismissible text-center" role="alert">
     <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span>
     </button>
     <strong>{% if message.level == DEFAULT_MESSAGE_LEVELS.ERROR %}Error{% else %}{{ message.tags|title }}{% endif %}!
     </strong> {{ message }}
 </div>
 {% endfor %}
 {% endif %}
 ...

1 个答案:

答案 0 :(得分:2)

问题是Django的默认消息标签与Bootstrap的上下文类不完全匹配。 Bootstrap对红色使用上下文类danger。您可以将MESSAGE_TAGS设置添加到settings.py中,以将danger标记应用于级别为messages.ERROR的邮件。

  

要更改消息级别(内置或自定义)的默认标签,请将MESSAGE_TAGS设置设置为包含要更改的级别的字典。随着这扩展了默认标签,您只需要为要覆盖的级别提供标签:

settings.py

from django.contrib.messages import constants as messages
MESSAGE_TAGS = {
    messages.ERROR: 'danger',
}