Flask之闪现flash原理及使用

 更新时间:2023年12月10日 08:53:47   作者:孤寒者  
Flask中的闪现是一种在请求之间传递消息的机制,本文就来介绍一下Flask之闪现flash原理及使用,具有一定的参考价值,感兴趣的可以了解一下

闪现—flash

这可不是LOL或是王者荣耀里的闪现哦~

Flask 中的 “闪现”(flash)是一种在请求之间传递消息的机制。它允许你将一条消息保存在一个请求中,在下一个请求中获取并显示该消息,然后立即将其删除【设置完之后阅后即焚!】。

Flask 中的闪现机制涉及以下两个函数:

  • flash(message, category='message'): 这个函数用于在当前请求中闪现一条消息。message 参数是要闪现的消息内容,category 参数是可选的消息分类,默认为 'message'。通常情况下,消息可以分为不同的类别(如成功消息、错误消息等),以便在前端进行样式化或特殊处理。
  • get_flashed_messages(with_categories=False, category_filter=[]): 这个函数用于获取所有已闪现的消息。with_categories 参数控制是否返回消息和其对应的分类,默认为 False,即只返回消息列表。category_filter 参数是可选的,用于指定要获取的特定分类的消息。

实战讲解:

# -*- coding: utf-8 -*-
from flask import Flask, flash, redirect, render_template, request, url_for

app = Flask(__name__)
app.secret_key = 'GuHanZheIsCool'      # 使用闪现必须设置secret_key哦~文末讲了原因。

@app.route('/')
def index():
    return render_template('index.html')


@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        # Perform login validation
        username = request.form.get('username')
        password = request.form.get('password')

        if username == 'admin' and password == 'GuHanZhe':
            flash('Login successful!', 'success')
            return redirect(url_for('index'))
        else:
            flash('Invalid credentials!', 'error')

    return render_template('login.html')


if __name__ == '__main__':
    app.run()

在上述代码中,使用 flash 函数在登录路由中闪现一条成功或错误消息。然后,在首页路由中使用 get_flashed_messages 函数获取并显示这些已闪现的消息。

页面html代码:

<!-- index.html -->
{% with messages = get_flashed_messages() %}
    {% if messages %}
        <ul class="messages">
            {% for message in messages %}
                <li>{{ message }}</li>
            {% endfor %}
        </ul>
    {% endif %}
{% endwith %}



<!-- login.html -->
<form action="{{ url_for('login') }}" method="POST">
    {% with messages = get_flashed_messages(category_filter=['error']) %}
    {% if messages %}
    <ul class="errors">
        {% for message in messages %}
        <li>{{ message }}</li>
        {% endfor %}
    </ul>
    {% endif %}
    {% endwith %}

    <!-- Form fields -->
    <input type="text" name="username"><br>
    <input type="text" name="password"><br>
    <button type="submit">Login</button>
</form>

在模板中,使用 get_flashed_messages 函数来获取已闪现的消息,并根据需要在适当的位置进行渲染和显示。可以根据消息的分类进行样式化或特殊处理,以便在前端进行区分和展示。

正常访问登录页面:

输入错误账号密码点击‘login’后:

刷新一下页面就会发现提示信息没了。这就是阅后即焚!

当输入正确的账号密码点击‘login’后:

刷新页面就会发现提示信息无了。这就是阅后即焚!

拓展:使用session简单实现闪现的功能:

from flask import Flask, session

app = Flask(__name__)
app.secret_key = 'GuHanZheIsCool'


@app.route('/x1')
def view_x1():
    session['msg'] = '孤寒者真帅~'
    return '视图函数x1'


@app.route('/x2')
def view_x2():
    msg = session.pop('msg')
    print(msg)
    return '视图函数x2'


if __name__ == '__main__':
    app.run()

访问x1路由设置:

访问x2路由,控制台会打印msg,二次访问会报错:

其实我们直接进入flash源码就会发现其内部就是基于session实现的:

 到此这篇关于Flask之闪现flash原理及使用的文章就介绍到这了,更多相关Flask 闪现flash内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python+Selenium实现浏览器标签页的切换

    Python+Selenium实现浏览器标签页的切换

    在实际工作中,我们经常会遇到页面切换的情况。就比如当点击了某个功能的按钮后,浏览器出现了新的标签页,需要在这些标签页之间进行切换。本文将利用Selenium实现这一功能,需要的可以参考一下
    2022-06-06
  • Python数组变形的几种实现方法

    Python数组变形的几种实现方法

    本文主要介绍了Python数组变形的几种实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • 解决Python访问MySQL数据库速度慢的问题

    解决Python访问MySQL数据库速度慢的问题

    这篇文章主要介绍了解决Python访问MySQL数据库速度慢的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • python opencv肤色检测的实现示例

    python opencv肤色检测的实现示例

    这篇文章主要介绍了python opencv肤色检测的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Permission denied的解决方法

    Permission denied的解决方法

    这篇文章主要介绍了Permission denied的解决方法,希望能给你带来帮助
    2021-08-08
  • python实现两个文件合并功能

    python实现两个文件合并功能

    这篇文章主要为大家详细介绍了python实现两个文件合并功能,一个简单的文件合并程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • Python爬取微信读书实现读书免费自由

    Python爬取微信读书实现读书免费自由

    主要跟大家介绍一下,我是如何用Python爬取小说,再导入微信读书的。成功实现在微信读书中各种“白票”付费小说,有需要的朋友可以借鉴参考下
    2021-09-09
  • Python 利用切片从列表中取出一部分使用的方法

    Python 利用切片从列表中取出一部分使用的方法

    今天小编就为大家分享一篇Python 利用切片从列表中取出一部分使用的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • python opencv设置摄像头分辨率以及各个参数的方法

    python opencv设置摄像头分辨率以及各个参数的方法

    下面小编就为大家分享一篇python opencv设置摄像头分辨率以及各个参数的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Python+Turtle制作七夕爱心光波表白的示例代码

    Python+Turtle制作七夕爱心光波表白的示例代码

    七夕要来啦,小编在闲暇之余创作了一个基于Python+Turtle的爱心光波表白,文中有详细的代码示例,对我们七夕表白有很大的帮助,感兴趣的小伙伴们快来来看看吧
    2023-08-08

最新评论