Flask 消息闪现是指将一条消息存储到 session 中,然后在下个 HTTP 请求中进行显示,然后立即从 session 中删除这条消息。这在用户注册、登录、注销等场景下非常有用。
本文将为大家详细介绍 Flask 消息闪现的完整攻略,包括以下内容:
- 创建 Flask 应用
- 添加消息闪现功能
- 在模板中显示闪现消息
- 在视图函数中设置闪现消息
- 完整示例代码
1. 创建 Flask 应用
首先,我们需要创建一个 Flask 应用。这里我们简单创建一个返回 "Hello World!" 的应用。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
2. 添加消息闪现功能
在 Flask 中,我们可以使用 session 来保存数据。消息闪现功能的实现也是通过将消息存储到 session 中。为此,我们可以使用 Flask 提供的消息闪现扩展,它提供了一个 Flash 类,可用于在视图函数中设置闪现消息。Flask 消息闪现提供的 API 如下:
flash(message, category='message')
其中,message 参数是消息内容,category 参数是消息分类,这个参数可以不传,如果不传默认为 message。这样可以方便地将不同类型的消息显示在不同的位置。
我们需要在 Flask 应用中,将 Flask 的 session 初始化,导入 Flask 的 message_flask 扩展,添加 secret_key。
from flask import Flask, session, flash
from flask.ext.session import Session
from flask.ext.message_flask import MessageFlask
# secret_key
app.secret_key = 'secret_key'
# session 初始化
sess = Session()
sess.init_app(app)
# 消息闪现扩展初始化
msg = MessageFlask(app)
@app.route('/')
def index():
# 设置闪现消息
flash('Hello message!', 'success')
return 'Hello, World!'
3. 在模板中显示闪现消息
在模板中显示闪现消息,需要使用 Flask 提供的 get_flashed_messages() 函数来获取闪现消息。该函数可以接收一个 category 参数,用于获取指定分类的消息。
下面是一个基于 Bootstrap 框架的示例模板代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Flask Message Flask</title>
<link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" rel="stylesheet">
</head>
<body>
<div class="container">
{% with flash_messages = get_flashed_messages(with_categories=true) %}
{% if flash_messages %}
{% for category, message in flash_messages %}
<div class="alert alert-{{category}} alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
{{ message }}
</div>
{% endfor %}
{% endif %}
{% endwith %}
</div>
</body>
</html>
4. 在视图函数中设置闪现消息
现在我们已经知道了如何在模板中显示闪现消息,那么如何在视图函数中设置闪现消息呢?这里有一个示例代码:
@app.route('/login', methods=['GET', 'POST'])
def login():
form = LoginForm()
if form.validate_on_submit():
user = User.query.filter_by(username=form.username.data).first()
if user is None or not user.verify_password(form.password.data):
flash('Invalid username or password.', category='danger')
return redirect(url_for('login'))
login_user(user, remember=form.remember_me.data)
flash('Login success!', category='success')
return redirect(url_for('index'))
return render_template('login.html', title='Sign In', form=form)
在以上代码中,当用户登录失败时,我们向用户显示一个 "Invalid username or password." 的错误消息。当用户登录成功时,我们向用户显示 "Login success!" 的成功消息。
5. 完整示例代码
from flask import Flask, session, flash, redirect, url_for, render_template
from flask.ext.session import Session
from flask.ext.message_flask import MessageFlask
app = Flask(__name__)
# secret_key
app.secret_key = 'secret_key'
# session 初始化
sess = Session()
sess.init_app(app)
# 消息闪现扩展初始化
msg = MessageFlask(app)
@app.route('/')
def index():
flash('Hello message!', 'success')
return render_template('index.html')
@app.route('/login', methods=['GET', 'POST'])
def login():
form = LoginForm()
if form.validate_on_submit():
user = User.query.filter_by(username=form.username.data).first()
if user is None or not user.verify_password(form.password.data):
flash('Invalid username or password.', category='danger')
return redirect(url_for('login'))
login_user(user, remember=form.remember_me.data)
flash('Login success!', category='success')
return redirect(url_for('index'))
return render_template('login.html', title='Sign In', form=form)
@app.route('/logout')
@login_required
def logout():
logout_user()
flash('Logout success!', category='warning')
return redirect(url_for('index'))
if __name__ == '__main__':
app.run()
以上就是本文关于 Flask 消息闪现的完整攻略,包括创建 Flask 应用、添加消息闪现功能、在模板中显示闪现消息、在视图函数中设置闪现消息和完整示例代码。如果您有任何问题或疑问,欢迎在评论区留言,我们会第一时间回复您。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解 Flask 消息闪现方法 - Python技术站