django message
settings
INSTALLED_APPS = [
'django.contrib.messages', # 第一个位置
]
MIDDLEWARE = [
'django.contrib.messages.middleware.MessageMiddleware', # 第二个位置
]
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR / 'templates']
,
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.contrib.messages.context_processors.messages', # 第三个位置
],
},
},
]
MESSAGE_STORAGE = 'django.contrib.messages.storage.cookie.CookieStorage'
# MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage'
# MESSAGE_STORAGE = 'django.contrib.messages.storage.session.SessionStorage'
#自定义level
MESSAGE_TAGS = {
50: 'danger'
}
前端
{% if messages %}
{% for message in messages %}
<div class="alert alert-{{ message.level_tag }} message fade in" role="alert">{{ message.message }}</div>
{% endfor %}
{% endif %}
<script>
$(function () {
bindSideBar();
bindMsg();
})
function bindMsg() {
setTimeout(function () {
$(".message").alert('close')
}, 3000)
}
</script>
视图层发msg
def add(request):
from django.contrib import messages
messages.success(request, '添加成功')
return redirect('level_list')
视图层获取msg
def level_list(request):
# 读取并删除msg
from django.contrib.messages.api import get_messages
messages = get_messages(request)
for msg in messages:
print(msg.message)
1.4 源码分析
前戏:message是一个对象(包裹)。
v1 = "szw"
v2 = ["szw",123]
class Message(object):
def __init__(self, level, message, extra_tags=None):
self.level = int(level)
self.message = message
self.extra_tags = extra_tags
obj = Message(10,"哈哈哈哈","123")
from django.contrib import messages
messages.add_message(reqeust, messages.ERROR, "删除成功1")
messages.add_message(reqeust, messages.SUCCESS, "删除成功2", extra_tags="哈哈哈")
-
【设置】中间件process_request加载
-
【设置】在视图函数中往message中写入值(内存)
-
【设置】中间件process_response,将内存中新增的数据写入到数据源
-
【新页面】中间件process_request加载
-
【新页面】在视图函数或模板中读取message中的信息(老的数据源加载的+新增的)
-
【设置】中间件process_response
used = True,则只保存新增部分。 added_new = True,老的数据源加载的+新增的都重新保存到数据源。
本文作者:Sherwin
本文链接:https://www.cnblogs.com/sherwin1995/p/16721728.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步