欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > django中的MESSAGE组件

django中的MESSAGE组件

2024/10/24 7:26:31 来源:https://blog.csdn.net/m0_66925868/article/details/141175264  浏览:    关键词:django中的MESSAGE组件

文章目录

    • message组件
      • 1 使用配置
      • 2 设置值
      • 3 读取值
      • 4 源码分析

message组件

1 使用配置

INSTALLED_APPS = [# 'django.contrib.admin',# 'django.contrib.auth',# 'django.contrib.contenttypes',# 'django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles',"web.apps.WebConfig"
]
MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware',# 'django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware','utils.md.AuthMiddleware'
]
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [],'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',],},},
]
# MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage'
# MESSAGE_STORAGE = 'django.contrib.messages.storage.cookie.CookieStorage'
MESSAGE_STORAGE = 'django.contrib.messages.storage.session.SessionStorage'

2 设置值

在前页面视图中设置值

from django.contrib import messages
messages.add_message(reqeust, messages.SUCCESS, "删除成功1")
messages.add_message(reqeust, messages.ERROR, "操作失败")

3 读取值

在后页面视图中读取值(读取值的同时,将值替换为本页面的message值,如果没有没有就为空列表)

  1. python代码中读取

    from django.contrib.messages.api import get_messages
    messages = get_messages(request)
    for msg in messages:print(msg)
    
  2. 前端模板代码中读取

    <ul>{% for message in messages %}<li>{{ message.tags }} {{ message }}</li>{% endfor %}
    </ul>
    

4 源码分析

message是一个对象(包裹)。

from django.contrib import messages
messages.add_message(reqeust, messages.ERROR, "删除成功1")
messages.add_message(reqeust, messages.SUCCESS, "删除成功2", extra_tags="哈哈哈")

第一次访问
在这里插入图片描述
后一次访问

在这里插入图片描述

  • 【设置】中间件process_request加载,创建一个MESSAGE对象的实例(settings中配置的MESSAGE_STORAGE不同创建不同实例)

  • 【设置】在视图函数中往message中写入值(此时数据保存在内存中的列表中)

  • 【设置】中间件process_response,将内存中新增的数据写入到数据源(cookie或者session)

  • 【新页面】中间件process_request加载(创建一个新的MESSAGE对象)

  • 【新页面】在视图函数或模板中读取message中的信息(老的数据源加载的+新增的)

  • 【设置】中间件process_response

    used = True,则只保存新增部分。
    added_new = True,老的数据源加载的+新增的都重新保存到数据源。
    

若有错误与不足请指出,关注DPT一起进步吧!!!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com