Flask之闪现flash原理及使用
作者:孤寒者
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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!