0


(十四)Flask之闪现flash

闪现—flash

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

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

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

  1. flash(message, category='message'): 这个函数用于在当前请求中闪现一条消息。message 参数是要闪现的消息内容,category 参数是可选的消息分类,默认为 'message'。通常情况下,消息可以分为不同的类别(如成功消息、错误消息等),以便在前端进行样式化或特殊处理。
  2. 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('/')defindex():return render_template('index.html')@app.route('/login', methods=['GET','POST'])deflogin():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 %}
        <ulclass="messages">
            {% for message in messages %}
                <li>{{ message }}</li>
            {% endfor %}
        </ul>
    {% endif %}
{% endwith %}

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

    <!-- Form fields --><inputtype="text"name="username"><br><inputtype="text"name="password"><br><buttontype="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')defview_x1():
    session['msg']='孤寒者真帅~'return'视图函数x1'@app.route('/x2')defview_x2():
    msg = session.pop('msg')print(msg)return'视图函数x2'if __name__ =='__main__':
    app.run()

访问x1路由设置:

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

有兴趣的同学可以自己继续往深扒一扒代码哦~

标签: flask python 后端

本文转载自: https://blog.csdn.net/qq_44907926/article/details/134819548
版权归原作者 孤寒者 所有, 如有侵权,请联系我们删除。

“(十四)Flask之闪现flash”的评论:

还没有评论