【6.0】Flask框架之闪现

发布时间 2023-08-26 21:47:26作者: Chimengmeng

【一】闪现引入

  • 一个请求 ---> 假设出错了 ---> 重定向到另一个地址 ---> 把错误信息在另一个返回中看到
  • 错误信息放个位置 ---> 另一个请求过来,去那个位置拿
  • 把一些数据,放在某个位置 ---> 后期可以去取出来 ---> 取完不用删除,就没了
  • 闪现(Flash)是一种在Web应用程序中临时存储消息或数据的机制。
  • 它通常用于在一个请求和下一个请求之间传递消息,例如错误消息、成功提示、验证信息等。
def index():
    s='xx错位了'
    return redirect('/errors')

def errors():
    return index.html

【二】简单使用

【1】直接取

  • 如何设置
flash('aaa')
  • 如何取
get_flashed_message()
  • 在Python的Flask框架中,闪现功能由flash函数和get_flashed_message函数提供。

  • 假设我们有两个视图函数indexerrors

    • 当在index函数中出现错误时,我们可以使用flash函数将错误信息存储在特定位置,然后重定向到errors函数进行错误信息的显示。
from flask import Flask, flash, redirect, render_template, request

app = Flask(__name__)
# 使用闪现必须使用 secret_key , 闪现的消息放在了 session 中
app.secret_key = 'your_secret_key'

@app.route('/')
def index():
    flash('Something went wrong')  # 存储错误信息
    return redirect('/errors')

@app.route('/errors')
def errors():
    return render_template('errors.html', error_messages=get_flashed_messages())  # 获取并显示错误信息

if __name__ == '__main__':
    app.run()
  • 在模板文件errors.html中,我们可以通过遍历error_messages来显示所有的错误消息:
{% for message in error_messages %}
    <p>{{ message }}</p>
{% endfor %}

【2】分类取

  • 分类放
flash('超时错误', category="x1")
  • 分类取
data = get_flashed_messages(category_filter=['x1'])
  • 分类放和分类取是 Flash 消息在 Flask 框架中的两个重要操作。
    • Flash 是一种临时存储用户通知消息的机制,它允许将消息传递给下一个请求,并在该请求结束后自动清除。
  • Flash 消息分为不同的类别(category),常用于区分不同类型的消息。
    • 例如在原始提问中给出了一个示例,使用了 x1 作为消息的分类。
    • 分类放(flash)将消息放入指定的类别,而分类取(get_flashed_messages)则从指定的类别中获取已放入的消息。

(1)分类放:

flash('超时错误', category="x1")
  • 在上述代码中,flash 函数用于将消息放入指定的消息类别。
  • 第一个参数是要放入的消息内容,而 category 参数是指定的类别名称,这里使用了 "x1" 作为示例。

(2)分类取:

data = get_flashed_messages(category_filter=['x1'])
  • 上述代码中,get_flashed_messages 函数用于从指定的类别中获取已放入的消息。
  • category_filter 参数用于指定要获取的类别,这里使用了 ['x1'] 作为示例,表示获取分类为 "x1" 的消息。

(3)完整示例

from flask import Flask, flash, get_flashed_messages

app = Flask(__name__)
app.secret_key = 'your_secret_key'

@app.route('/')
def index():
    flash('超时错误', category="x1")  # 将消息放入 "x1" 类别
    return 'Hello World'

@app.route('/get_messages')
def get_messages():
    data = get_flashed_messages(category_filter=['x1'])  # 从 "x1" 类别获取已放入的消息
    return str(data)

if __name__ == '__main__':
    app.run()
  • 在上述示例中
    • 当访问根路由 '/' 时,会放入一个消息到 "x1" 类别中;
    • 而当访问 '/get_messages' 路由时,则会从 "x1" 类别获取已放入的消息,并返回结果。
  • 注意,在使用 Flash 消息的前提下,需要设置一个加密密钥(secret key)
    • 例如上述代码中的 app.secret_key
    • 这样可以确保消息的安全性。

【2】闪现的用法

  • 存储消息:
    • 通过调用flash函数来存储消息,可以直接传入消息字符串作为参数。
    • 例如:flash('超时错误')
  • 重定向:
    • 在需要重定向到另一个地址时,可以使用redirect函数将请求重定向到指定的URL。
  • 获取消息:
    • 通过调用get_flashed_message函数来获取被存储的消息。
    • 默认情况下,它会获取并移除所有的消息。
    • 例如:messages = get_flashed_messages()
  • 消息分类:
    • 可以通过给flash函数传递category参数来对消息进行分类。
    • 然后,在调用get_flashed_messages函数时,可以通过category_filter参数来指定要获取哪个分类下的消息。
    • 例如:flash('超时错误', category="x1")data = get_flashed_messages(category_filter=['x1'])
  • 闪现机制的优点在于它允许在重定向之间临时存储消息,并在下一个请求中显示这些消息。
  • 这对于传递验证错误、成功提示或其他与用户交互相关的消息非常有用。