flask 闪现(flash)

闪现(flash)

flask中得闪现存放数据的地方,一旦取了,数据就没了

实现跨请求间传递数据

基本使用

  • 设置:flash('欢迎你')

  • 取:get_flashed_messages()

from flask import Flask, request, render_template, redirect,flash,get_flashed_messages

app = Flask(__name__)

app.debug = True
# 要用闪现,必须指定secret_key--》闪现内部使用session实现的
app.secret_key='asdfasdf'


@app.route('/login', endpoint='login',methods=['GET','POST'])
def login():
    if request.method == 'GET':
        return render_template('login.html')
    else:
        username = request.form.get('username')
        password = request.form.get('password')
        if username == 'lqz' and password == '123':
            # 使用闪现,放个数据
            flash('欢迎你')
            return redirect('/')
        else:
            flash('用户名密码错误')
            return redirect('/')

@app.route('/')
def index():
    # 从闪现中取出数据
    # print(get_flashed_messages())
    return render_template('index.html')

if __name__ == '__main__':
    app.run()
  • 根据标签设置和取值
flash('超时错误',category="x1")
get_flashed_messages(category_filter=['x1'])

django中使用

################ 1 基础配置############
INSTALLED_APPS = [
    ...
    'django.contrib.messages',
    ...
]
# 在django setting.py 取消注释的message app
MIDDLEWARE = [
    ...
    'django.contrib.messages.middleware.MessageMiddleware',
    ...
]
# 在django setting.py 取消注释的message 的中间件
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                ...
                'django.contrib.messages.context_processors.messages',
            ],
        }
    }
]
################ 2 设置存放位置############
MESSAGE_STORAGE = "django.contrib.messages.storage.session.SessionStorage"


################ 3 放入值############
#添加message
from django.contrib import messages
def concel_order(request):
    messages.add_message(request, messages.SUCCESS, "删除成功1")
    messages.add_message(request, messages.SUCCESS, "删除成功2")
    
    return redirect("/order/control/")

################ 4 视图函数中取############
# 在视图函数中添加messages模块
# 再通过messages.add_message导入提示信息
# 在视图函数中import get_messages模块获取添加的提示信息
def control_order(request):
    if request.method == "GET":
        from django.contrib.messages.api import get_messages
        m1 = get_messages(request)
        print(m1)
        
################ 5 模板中取############
# 在html模板中添加for循环拿到message
<div>
    {% for obj in messages %}
        <ul>{{ obj.message }}</ul>
    {% endfor %}
</div>
posted @ 2024-06-24 08:57  蓝幻ﹺ  阅读(15)  评论(0编辑  收藏  举报