首页 > 其他分享 >2 Django-message组件

2 Django-message组件

时间:2022-08-22 14:56:18浏览次数:53  
标签:middleware messages django contrib context 组件 message Django

假设:你正在做一个订单支付平台,其中用到了删除/撤销订单问题。想给予用户一些提示。可以用到Django的message组件。

该组件通过第一次请求,写入提示信息并返回重定向,第二次请求,呈现提示内容。
建议:有跳转的时候才使用message,更多时候通过ajax就可完成。

message其实是一个对象

1 settings配置

# 将message产生的数据,存储在Session和存储在Cookie中
# MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage'
# 将message产生的数据,存储在Cookie中
# MESSAGE_STORAGE = 'django.contrib.messages.storage.cookie.CookieStorage'

# 将message产生的数据,存储在Session中
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',  # App注册
    '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',
                # 在html模板中,使用时,较为方便。
            ],
        },
    },
]

1.2 设置值

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

1.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>

标签:middleware,messages,django,contrib,context,组件,message,Django
From: https://www.cnblogs.com/it-lkp/p/16612661.html

相关文章

  • vue父传子属性命名和封装组件命名问题(巨坑)
    在vue的中文官网有这样的说明:HTML中的特性名是大小写不敏感的,所以浏览器会把所有大写字符解释为小写字符。这意味着当你使用DOM中的模板时,camelCase(驼峰命名法)的pr......
  • element-ui 城市选择组件
    <el-cascadersize="large":options="options"placeholder="请选择地区"expand-trigger="hover"ref="cascaderAddr"v-model="selectedOptions"@change......
  • Vue 组件通信之 Bus
    bus详细描述:vue中非父子组件之间通信除了使用vuex,也可以通过bus总线,两者适用场景不同。bus适合小项目、数据被更少组件使用的项目,对于中大型项目数据在很多组件之间使用......
  • Vue面试题06:Vue子组件是否可以修改父组件的数据?
    Vue子组件是否可以修改父组件的数据?可以修改但不推荐:首先,文档中指出组件开发需要遵循单向数据流原则:即所有的props都遵循着单向绑定的原则,props因父组件的更新而变化......
  • 同一个父组件,兄弟组件相互传参,调用
    组件brother2想调用组件brother1的方法,并传参可以新建一个handler.js文件importVuefrom'vue';exportdefaultnewVue();brother1组件方法:importhandlerfr......
  • vue3动态组件切换
    <template><divclass="goods-tabs"><nav><a@click='toggle("GoodsDetail")':class="{active:componentName==='GoodsDetail'}"href="javascript:;">商品详情</a>......
  • vue中子组件修改父组件中传递的参数的值
    方法一:1<!--父组件代码-->2<template>3<div>4<p>我是父组件</p>5<button@click="handleShowChild"v-show="!isVisibleChild">显示子组件</but......
  • 054_末晨曦Vue技术_处理边界情况之组件之间的循环引用
    组件之间的循环引用点击打开视频讲解更详细假设你需要构建一个文件目录树,像访达或资源管理器那样的。你可能有一个<tree-folder>组件,模板是这样的:<p><span>{{fold......
  • Django 2.0 新特点
    2017年12月2日,Django官方发布了2.0版本,成为多年来的第一次大版本提升,那么2.0对广大Django使用者有哪些变化和需要注意的地方呢?一、Python兼容性Django2.0支持Python3.......
  • vue学习笔记:组件
    组件是Vue.js最强大的功能之一。组件可以扩展HTML元素,封装可重用的代码,说白了就是一组可以重复使用的模板。组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任......