Django messages 消息(中)
一、在视图及模板中使用
add_message(request, level, message, extra_tags="", fail_silently=False)
例:
新增消息
from django.contrib import messages
messages.add_message(request, messages.INFO, 'Hello world!')
有几个快捷方法提供标准的方式来新增消息并带有常见的标签(这些标签通常表示消息的 HTML 类型)
messages.debug(request, "%s SQL statements were executed." % count)
messages.info(request, "Three credits remain in your account.")
messages.success(request, "Profile details updated.")
messages.warning(request, "Your account expires in three days.")
messages.error(request, "Document deleted.")
二、显示消息
get_messages(request)
在模板中,可以像下面这样使用:
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li {% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
三、配置使用
在生产使用中可以把它整合成一个模板便于调用,结合前端显示当有错误或者其它信息时浏览器可以 alert 消息。
例
在 settings.py 添加
from django.contrib.messages import constants as message_constants
MESSAGE_LEVEL = message_constants.INFO
TEMPLATES = [
{
"BACKEND": "django.template.backends.django.DjangoTemplates",
"DIRS": [os.path.join(BASE_DIR, "templates")],
"APP_DIRS": True,
"OPTIONS": {
"context_processors": [
"django.template.context_processors.debug",
"django.template.context_processors.request",
"django.contrib.auth.context_processors.auth",
"django.contrib.messages.context_processors.messages",
]
}
}
]
在 views.py 中添加
from django.contrib import messages
def flash(request, title, text, level="info"):
"""
利用 django 的 message 系统发送一个消息
"""
level_map = {
"info": messages.INFO,
"debug": messages.DEBUG,
"success": messages.SUCCESS,
"warning": messages.WARNING,
"error": messages.ERROR
}
level = level_map[level]
messages.add_message(request, level, text, extra_tags=title)
return "ok"
在 html 文件中添加
{% if messages %}
<script>
{% for msg in messages %}
alert("{{ msg.message }}")
{% endfor %}
</script>
{% endif %}