今天学习了 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() 方法看起来像是不必要的重复。 使用flash over this在实践上有什么好处或区别?
答案 0 :(得分:1)
当您向 /profile
发出重定向时,您如何知道用户是自己访问了该页面,还是由于某个操作(例如登录后)而被重定向?
flash()
方法将消息保存到用户会话中,以便他们不会因导航而丢失。
在这种情况下,您不能使用 render_template(name, message="success")
,因为当您重定向用户时,浏览器并不关心响应,当它看到 30x
响应时,它会读取 {{ 1}} 标头并在新请求中加载该 URL,因此您设置的任何上下文或呈现的任何内容都将被丢弃。这就是您需要 Location
消息以在两个后续请求之间传递消息的原因。
另外,阅读flask docs中的解释,很清楚。 https://flask.palletsprojects.com/en/2.0.x/patterns/flashing/