我想在Django应用程序中处理消息。不幸的是,除了错误消息不是红色之外,每种消息类型似乎都能按预期工作。
我的代码非常简单。
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">×</span>
</button>
<strong>{% if message.level == DEFAULT_MESSAGE_LEVELS.ERROR %}Error{% else %}{{ message.tags|title }}{% endif %}!
</strong> {{ message }}
</div>
{% endfor %}
{% endif %}
...
答案 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',
}