Flash信息被用于网络应用,在用户浏览图形用户界面时向他们提供有用的反馈。如果你曾经在当今互联网上的任何流行服务中注册过账户,你很可能对Flash消息感到熟悉。这些信息通常在一个特定的事件中出现一次,并在一些简单的JavaScript代码的帮助下在很短的时间内消失。在本教程中,我们将看到如何在Python Flask应用程序中生成这种Flash消息。
flash() - 设置闪光信息
要在Flask中创建flash消息,你可以使用flash模块,将其导入你的项目。flash()函数被传递一个消息参数和一个可选的类别参数。下面突出显示的这行代码为我们的Flask应用程序添加了一条Flash消息。
from flask import Flask, render_template, request, redirect, url_for, flash
import json
import os.path
app = Flask(__name__)
@app.route('/')
def home():
return render_template('home.html')
@app.route('/shortenurl', methods=['GET', 'POST'])
def shortenurl():
if request.method == 'POST':
urls = {}
if os.path.exists('urls.json'):
with open('urls.json') as url_storage:
urls = json.load(url_storage)
if request.form['shortcode'] in urls.keys():
flash('Please choose a different Shortcode, that one is already in use')
return redirect(url_for('home'))
urls[request.form['shortcode']] = request.form['url']
with open('urls.json', 'w') as url_storage:
json.dump(urls, url_storage)
return render_template('shortenurl.html', shortcode=request.form['shortcode'])
elif request.method == 'GET':
return redirect(url_for('home'))
else:
return 'Not a valid request method for this route'
@app.route('/<string:shortcode>')
def shortcode_redirect(shortcode):
if os.path.exists('urls.json'):
with open('urls.json') as url_storage:
urls = json.load(url_storage)
if shortcode in urls.keys():
return redirect(urls[shortcode])
现在,如果你试图立即运行这段代码,你会得到一个错误,例如。"RuntimeError RuntimeError。因为没有设置秘钥,所以会话不可用。将应用程序上的secret_key设置为唯一的、秘密的东西"。所以为了在Flask中使用flash消息,你需要设置一个秘钥。现在让我们来做这件事。
添加秘钥
如上所述,我们要使用消息闪电,所以我们必须在flask应用中再添加一个属性。这可以在app.py里面完成,就在app变量被设置之后。这样做的方法是使用app.secret_key。这可以让我们安全地从用户那里来回发送信息,以确保在连接上不能有勺子,信息不能被看到。因此,我们需要为app.secret_key提供某种随机的字符串,因为我们是在开发中,你可以直接输入一些想象中的字符串。当涉及到生产时,你会希望找到一个非常随机的密钥,并使其很长,这样就没有人可以猜到秘钥。
get_flashed_messages() - 获取Flash消息
在这一点上,消息正在被闪现到会话中,但我们在GUI上不会看到任何东西。Flash消息在Flask应用程序中的工作方式是将任何Flash消息传递给你要渲染的模板。在该模板中,你可以检查并查看是否有任何flash消息,如果有,就将其显示给用户。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Make A Short URL</title>
</head>
<body>
<h1>Make A Short URL</h1>
{% for message in get_flashed_messages() %}
<h2>{{ message }}</h2>
{% endfor %}
<form action="shortenurl" method="post">
<label for="url">Enter URL</label>
<input type="url" name="url" value="" required>
<label for="shortcode">Enter Name</label>
<input type="text" name="shortcode" value="" required>
<input type="submit" value="Submit">
</form>
</body>
</html>
现在我们已经在app.py中使用了flash(),设置了app.secrect_key,也在模板中添加了对get_flashed_messages()的调用,如果在我们的JSON文件中已经发现了重复的短码,用户应该看到一个flash信息。果然,它的效果很好
了解更多关于如何在Python Flask中使用Flash消息的信息
- Flask模式的闪现 (flask.palletsprojects.com)
- Flask Flash方法(askpython.com)
- Flash Flask教程 (pythonprogramming.net)
- 用Flask闪现消息 (blog.teclado.com)
- Flask消息闪动.htm(tutorialspoint.com)
- 如何在Flask中显示闪烁的信息而不重新载入页面(stackoverflow.com)。
- 学习Flask Flask消息闪动(pythonise.com)
- 在Python Flask中的Flash消息管理 (roytuts.com)
- 如何用Flask Flash闪现一个带链接的消息(stackoverflow.com)
- 如何在Flask中清除现有的Flash消息(stackoverflow.com)
- 如何在Flask中清除现有的Flash消息(stackoverflow.com)