flask - flash() 与使用 render_template() 参数相比有什么优势?
问题描述
今天学习了 Flask 的 flash() 方法。我的理解是,它告诉模板显示一次消息。但也可以通过如下的 render_template() 方法完成:
@app.route('/')
def index():
if condition:
error = "Some error messages to flash"
else:
error = None
return render_template('index.html', error=error)
这使得 flash() 方法看起来像一个不必要的重复。在实践中使用闪存有哪些优点或不同之处?
解决方案
例如,当您发出重定向到 时,/profile
您如何知道用户是自己访问了该页面,还是由于某个操作(例如登录后)而被重定向?
flash()
方法将消息保存到用户会话,这样他们就不会因为导航而迷路。
您不能render_template(name, message="success")
在这种情况下使用,因为当您重定向用户时,浏览器并不关心响应,当它看到30x
响应时,它会读取Location
标头并在新请求中加载该 URL,因此无论您使用什么上下文ve 设置,或者你渲染的任何东西,都被丢弃了。这就是为什么您需要使用flash
消息在两个后续请求之间传递消息的原因。
另外,阅读烧瓶文档中的解释,很清楚。 https://flask.palletsprojects.com/en/2.0.x/patterns/flashing/
推荐阅读
- c# - 你能在结构中声明对象类型吗
- python - 使用我上传的文件在 django 中创建模型对象会损坏文件
- karate - 空手道框架默认路径
- java - 在 Play 中按参数数据类型路由
- plunker - 如何重命名 Plunker 项目?
- bayesian - 具有抛硬币问题的简单贝叶斯网络
- react-native - 视图右侧的图标 React-native
- vb.net - 将子文件夹中的所有文件复制到新文件夹中
- java - IllegalStateException 通过调用 webClient 请求
- javascript - NodeJS SQL Server - 使用异步运行多个查询