一、配置
在项目的settings.py
文件中配置django.contrib.messages的相关信息(默认是有的)
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
]
二、创建提醒消息
-
添加消息(在
views.py
中使用)from django.contrib import messages def test(request): # 方法一 messages.add_message(request, messages.DEBUG, '消息1(方法一)') messages.add_message(request, messages.INFO, '消息2(方法一)') messages.add_message(request, messages.SUCCESS, '消息3(方法一)') messages.add_message(request, messages.WARNING, '消息4(方法一)') messages.add_message(request, messages.ERROR, '消息5(方法一)') # 方法二: messages.debug(request, '消息1(方法二)') messages.info(request, '消息2(方法二)') messages.success(request, '消息3(方法二)') messages.warning(request, '消息4(方法二)') messages.error(request, '消息5(方法二)') return render(request, "test.html")
-
消息等级
使用的时候一定要注意方法一和方法二关键字的
大小写
和位置
关键字 说明 DEBUG
将在生产部署中被忽略(或删除)的与开发相关的消息 INFO
为用户提供信息消息 SUCCESS
行为成功消息 WARNING
失败并没有发生,但可能即将发生 ERROR
一个操作没有成功,或者发生了其他一些失败
三、跳出弹窗
HTML中调用
<script>
{% if messages %}
{% for msg in messages %}
console.log('消息类型:{{ msg.tags }},消息内容:{{ msg }}');
{% endfor %}
{% endif %}
</script>
说明:
- 通过if判断是否有消息;
- messages是一个列表,必须用for标签循环它;
- 即使你知道只有一条消息,也要迭代messages列表,否则下个请求中,上个请求的消息不会被清除。
- 可以通过message.tags拿到每个消息的CSS样式
控制台日志
其他:
-
在视图中,可以使用get_messages()方法获取消息。
from django.contrib.messages import get_messages messages_list= get_messages(request)
-
message: 消息的实际内容文本。不要使用message.message,直接message。
-
level: 消息级别,一个整数。
-
tags: 一个字符串,由该消息的所有标签(extra_tags和tags)组合而成,组合时用空格分割开这些标签。
-
extra_tags: 一个字符串,由该消息的定制标签组合而成,并用空格分割。默认为空。
-
level_tag: 当前消息级别对应的CSS字符串。