【6.0】Flask框架之闪现
【一】闪现引入
- 一个请求 ---> 假设出错了 ---> 重定向到另一个地址 ---> 把错误信息在另一个返回中看到
- 错误信息放个位置 ---> 另一个请求过来,去那个位置拿
- 把一些数据,放在某个位置 ---> 后期可以去取出来 ---> 取完不用删除,就没了
- 闪现(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
函数提供。 -
假设我们有两个视图函数
index
和errors
。- 当在
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'])
。
- 可以通过给
- 闪现机制的优点在于它允许在重定向之间临时存储消息,并在下一个请求中显示这些消息。
- 这对于传递验证错误、成功提示或其他与用户交互相关的消息非常有用。
本文来自博客园,作者:Chimengmeng,转载请注明原文链接:https://www.cnblogs.com/dream-ze/p/17659505.html