详解 Flask 消息闪现方法

Flask 消息闪现是指将一条消息存储到 session 中,然后在下个 HTTP 请求中进行显示,然后立即从 session 中删除这条消息。这在用户注册、登录、注销等场景下非常有用。

本文将为大家详细介绍 Flask 消息闪现的完整攻略,包括以下内容:

  1. 创建 Flask 应用
  2. 添加消息闪现功能
  3. 在模板中显示闪现消息
  4. 在视图函数中设置闪现消息
  5. 完整示例代码

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 应用、添加消息闪现功能、在模板中显示闪现消息、在视图函数中设置闪现消息和完整示例代码。如果您有任何问题或疑问,欢迎在评论区留言,我们会第一时间回复您。

此文章发布者为:Python技术站作者[metahuber],转载请注明出处:https://pythonjishu.com/flask-message-handle/

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年 3月 13日 下午8:33
下一篇 2023年 3月 13日 下午8:34

相关推荐

  • Flask 扩展是什么?如何安装使用

    Flask 是一款轻量级的 Python Web 框架,拥有一定的灵活性和扩展性,可以让开发者根据自己的需求进行定制化开发。扩展是 Flask 框架的一个重要特性,可以为 Flask 提供更多的功能和能力。 本文将详细介绍 Flask 扩展的相关知识和使用方法,过程中会提供代码示例。 什么是 Flask 扩展? Flask 扩展是针对 Flask 应用程序的…

    Flask 2023年 3月 13日
    00
  • Flask 静态文件的配置方法(详解版)

    静态文件的意义 在 Web 应用开发中,静态文件(如图片、CSS、JavaScript 文件)是不随着请求数据的变化而改变的文件。这些文件的位置在 Web 应用的根目录下的 static 文件夹中,静态文件是浏览器端显示的一些基础组件,例如背景图片、图标、样式等。通过使用静态文件,Web 应用可以在浏览器端呈现更好的视觉效果和用户体验。 Flask 程序中静…

    Flask 2023年 3月 13日
    00
  • Flask 模板使用方法详解

    Flask 是一个轻量级的 Python Web 框架,其提供了很多方便的工具,其中包括 Flask 模板方法。Flask 模板方法是 Flask 中主要用于渲染 HTML 页面的一种机制。在本文中,我们将详细介绍 Flask 模板方法的使用和一些代码示例。 Flask 模板的基本使用 在 Flask 中,模板文件存放在应用程序根目录中的 templates…

    Flask 2023年 3月 13日
    00
  • 一文了解Flask框架

    Flask是一款基于Python语言的轻量级Web框架,它的设计目标是简单易用、高效灵活。其核心实现只有约3000行代码,但却支持RESTful请求、Jinja2模板引擎、Werkzeug工具箱等众多功能,适合用于构建小型Web应用、快速原型开发等领域。 Flask框架的核心思想是WSGI(Web Server Gateway Interface),即Web…

    2023年 3月 13日
    00
  • Flask 变量规则详解

    Flask 是一个轻量级的 Web 框架,其变量规则功能允许开发者创建动态 URL。这篇文章将介绍 Flask 变量规则的详细信息,帮助开发者理解如何使用 Flask 创建动态 URL。本文将涉及以下主题: 什么是变量规则? 如何使用变量规则创建动态 URL? 给变量规则添加限制条件 什么是变量规则? 在 Flask 中,变量规则指的是将 URL 中的部分作…

    Flask 2023年 3月 13日
    00
  • 如何部署Flask?(详解版)

    部署前准备 1.准备服务器环境(如 Ubuntu、CentOS等)。 2.安装必要的软件和库,包括 Python、pip、virtualenv、Nginx、Gunicorn等: # 安装 Python 和 pip sudo apt-get update sudo apt-get install python3-pip # 升级 pip pip install…

    Flask 2023年 3月 13日
    00
  • Flask WTF(表单处理)扩展详解

    Flask WTF是Flask框架的一个扩展,它提供了许多方便的功能来处理表单数据。 本文将详细介绍Flask WTF的使用方法。 安装 首先,需要使用pip安装Flask WTF扩展 pip install Flask-WTF 导入 在Flask应用中,需要导入Flask-WTF模块: from flask_wtf import FlaskForm fro…

    Flask 2023年 3月 13日
    00
  • 用 Flask 实现发送电子邮件

    Flask 是一款轻量级的 Web 框架,非常适合快速开发小型 Web 应用。 在这篇文章中,我们将详细介绍如何在 Flask 应用中发送邮件。 安装 Flask-Mail 扩展 首先,我们需要安装 Flask-Mail 扩展来发送邮件。可以使用下面的命令来安装 Flask-Mail: pip install Flask-Mail 接下来,我们需要设置 Fl…

    Flask 2023年 3月 13日
    00
  • Flask FastCGI(处理Web请求)使用方法详解

    Flask是一款轻量级的Web应用框架,可以用于快速开发Web应用。其中,FCGI是一种处理Web请求的协议,它在承载Web服务器和应用程序之间,提供了可靠的通讯机制。 在实际应用中,我们可以使用Flask FastCGI来将Flask应用部署在Web服务器上,然后通过FastCGI协议与Web服务器进行通讯。 本文将介绍Flask FastCGI的使用方法…

    Flask 2023年 3月 13日
    00
  • 详解Flask Sijax(异步请求)使用方法

    Flask Sijax是一个用于Flask的简单Ajax库。它可以帮助您轻松地向服务器发送异步请求,以获取或更新页面上的数据,而无需刷新整个页面。在本文中,我们将提供一个完整的攻略,以帮助您学习如何使用Flask Sijax。 安装和设置 首先,您需要在项目中安装Flask Sijax。您可以使用以下命令在终端中安装它: pip install Flask-…

    Flask 2023年 3月 13日
    00