iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >源码分析Django的message组件
  • 488
分享到

源码分析Django的message组件

Django message组件Django message 2023-05-18 11:05:40 488人浏览 八月长安
摘要

目录Django的Message组件(源码分析)1. 配置2. 设置值3. 读取值4. 源码分析4.1第一步: 设置值4.2 第二步: 读取值DjanGo的Message组件(源码分

DjanGo的Message组件(源码分析)

1. 配置

# MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage'
# MESSAGE_STORAGE = 'django.contrib.messages.storage.cookie.CookieStorage'
MESSAGE_STORAGE = 'django.contrib.messages.storage.session.SessionStorage'
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',
            ],
        },
    },
]

2. 设置值

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

3. 读取值

  • 第一种: 视图中读取
from django.contrib.messages.api import get_messages
messages = get_messages(request)
for msg in messages:
    print(msg)
  • 第二种: 模版中读取
<ul>
    {% for message in messages %}
	    <li>{{ message.tags }} {{ message }}</li>
    {% endfor %}
</ul>

4. 源码分析

4.1第一步: 设置值

from django.contrib import messages
messages.add_message(reqeust, messages.SUCCESS, "删除成功1")

我们根据django的生命周期, 从Middleware入手,

  • process_request: 将SessionStorage对象封装到request的_message(咱们的案例里面也有将用户信息封装到request中, 这样在中间件中添加方便后期调用)
  • process_response: 将message对象反序列化后储存到session/Cookie中

4.2 第二步: 读取值

  • process_request: 通过循环读取message内容
  • process_response: 从session中删除message值

  • 【设置】中间件process_request加载

  • 【设置】在视图函数中往message中写入值(内存)

  • 【设置】中间件process_response,将内存中新增的数据写入到数据源

  • 【新页面】中间件process_request加载

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

  • 【设置】中间件process_response
used = True,则只保存新增部分。
added_new = True,老的数据源加载的+新增的都重新保存到数据源。

到此这篇关于源码分析Django的message组件的文章就介绍到这了,更多相关Django message组件内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 源码分析Django的message组件

本文链接: https://www.lsjlt.com/news/212013.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 源码分析Django的message组件
    目录Django的Message组件(源码分析)1. 配置2. 设置值3. 读取值4. 源码分析4.1第一步: 设置值4.2 第二步: 读取值Django的Message组件(源码分...
    99+
    2023-05-18
    Django message组件 Django message
  • django源码分析 LazySetti
    一、django中通过LazySetting对象来获取项目的配置,LazySetting对象有什么特性?为什么使用这个对象? LazySetting顾名思义,就是延迟获取配置内容。比如,我们定义了一个对象A,并对其添加了一些属性,对A初始...
    99+
    2023-01-31
    源码 django LazySetti
  • iOS组件化源码分析
    这篇“iOS组件化源码分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“iOS组件化源码分析”文章吧。一、iOS 组件化常用...
    99+
    2023-07-05
  • django源码分析 python ma
    django是一个快速开发web应用的框架, 笔者也在django框架上开发不少web应用,闲来无事,就想探究一下django底层到底是如何实现的,本文记录了笔者对django源码的分析过程 I believe to become a ...
    99+
    2023-01-31
    源码 django ma
  • Android Jetpack组件LiveData源码分析
    本篇内容主要讲解“Android Jetpack组件LiveData源码分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android Jetpack组件LiveData源...
    99+
    2023-07-05
  • Vue组件中的自定义事件源码分析
    这篇文章主要介绍“Vue组件中的自定义事件源码分析”,在日常操作中,相信很多人在Vue组件中的自定义事件源码分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue组件中的自定义事件源码分析”的疑惑有所帮助!...
    99+
    2023-06-29
  • DataV全屏容器组件源码分析
    这篇文章主要介绍“DataV全屏容器组件源码分析”,在日常操作中,相信很多人在DataV全屏容器组件源码分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”DataV全屏容器组件源码分析”的疑惑有所帮助!接下来...
    99+
    2023-07-05
  • Django admin源码剖析
    单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。 比如,某个服务器程序的配置信息存放在...
    99+
    2023-01-30
    源码 Django admin
  • SpringCloud负载均衡组件Ribbon源码分析
    本文小编为大家详细介绍“SpringCloud负载均衡组件Ribbon源码分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringCloud负载均衡组件Ribbon源码分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来...
    99+
    2023-07-02
  • Android Handler,Message,MessageQueue,Loper源码解析详解
    本文主要是对Handler和消息循环的实现原理进行源码分析,如果不熟悉Handler可以参见博文《 Android中Handler的使用》,里面对Android为何以引入Handle...
    99+
    2024-04-02
  • Dubbo Service Mesh基础架构组件源码分析
    这篇文章主要讲解了“Dubbo Service Mesh基础架构组件源码分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Dubbo Service ...
    99+
    2023-07-05
  • Vue组合式API源码分析
    这篇“Vue组合式API源码分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue组合式API源码分析”文章吧。一. 为什...
    99+
    2023-07-05
  • Android Jetpack组件Lifecycle源码解析
    目录前言源码版本简单使用源码分析原理探究初始化工作两个重要枚举类Lifecycle.EventLifecycle.StateLifecycleRegistryObserverWith...
    99+
    2023-03-13
    Android Jetpack组件Lifecycle Android Jetpack
  • fastapi与django异步的并发源码对比分析
    这篇文章主要介绍“fastapi与django异步的并发源码对比分析”,在日常操作中,相信很多人在fastapi与django异步的并发源码对比分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”fastapi...
    99+
    2023-07-05
  • Android Jetpack 组件LiveData源码解析
    目录前言基本使用疑问源码分析ObserverObserverWrapperLifecycleBoundObserverMutableLiveDatapostValuesetValue...
    99+
    2023-03-10
    Android Jetpack LiveData Android Jetpack
  • Vue3全局组件通信之provide/inject源码分析
    1、前言顾名思义,爷孙组件是比 父子组件通信 要更深层次的引用关系(也有称之为 “隔代组件”):C组件引入到B组件里,B组件引入到A组件里渲染,此时A是C的爷爷级别(可能还有更多层级关系),如果你用 props ,只能一级一级传递下去,那就...
    99+
    2023-05-14
    Vue3 provide inject
  • vue3新拟态组件库开发流程之table组件源码分析
    目录基础表格固定表头高度/流体高度自定义列宽基础表格 首先开发table组件之前,先想好要用什么样式的api,因为笔者在生产工作中用的都是element,所以前面几个组件风格和ele...
    99+
    2023-05-18
    vue3 table组件源码 vue3组件库开发
  • Vue高级组件之函数式组件的使用场景与源码分析
    目录介绍使用场景源码分析总结介绍 Vue提供了一种可以让组件变为无状态、无实例的函数化组件。从原理上说,一般子组件都会经过实例化的过程,而单纯的函数组件并没有这个过程,它可以简单理...
    99+
    2024-04-02
  • Django的admin源码浅析和模仿
    admin模块: admin提供了5种接口 list_display, 指定数据展示字段,不能放多对多字段 list_display_link,哪个字段可以链接   search_fields,搜索框 search_fiekds ...
    99+
    2023-01-31
    源码 Django admin
  • Vue3源码分析组件挂载创建虚拟节点
    目录前情提要1. Mount函数2. 创建虚拟节点的几个方法(1) createVNode:用于创建组件的虚拟节点(2) createElementVNode:用于创建普通tag的虚...
    99+
    2022-11-13
    Vue3组件挂载创建虚拟节点 Vue3组件挂载
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作