(十四)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_forapp = 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 validationusername = 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, sessionapp = 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实现的:

在这里插入图片描述

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/201066.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Day14——数据结构和集合源码

1.数据结构 简单来说&#xff0c;数据结构&#xff0c;就是一种程序设计优化的方法论&#xff0c;研究数据的逻辑结构和物理结构以及它们之间相互关系&#xff0c;并对这种结构定义相应的运算&#xff0c;目的是加快程序的执行速度、减少内存占用的空间。 1.1 数据的逻辑结构…

小航助学题库白名单竞赛考级蓝桥杯等考scratch(12级)(含题库教师学生账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09; 需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09;

webpack学习-2.管理资源

webpack学习-2.管理资源 1.这章要干嘛2.加载css注意顺序&#xff01; 3.总结 1.这章要干嘛 管理资源&#xff0c;什么意思呢&#xff1f;管理什么资源&#xff1f;项目中经常会 导入各种各样的css文件&#xff0c;图片文件&#xff0c;字体文件&#xff0c;数据文件等等&#…

C#-并行编程的概念及其运用

目录 一、介绍 二、并行编程 1、Parallel类 2、Timer类 1、使用Timer类 一、介绍 并行编程实际就是同一时间处理不同任务&#xff0c;可分为数据并行性&#xff08;在不同任务间同时处理相同数据&#xff09;和任务并行性&#xff08;同时执行不同的功能&#xff09;&…

一个潜水多年的体制内的生意人来实际谈谈老百姓该怎么办?

建议大家去看看天涯神贴《一个潜水多年的体制内的生意人来实际谈谈老百姓该怎么办&#xff1f;》 天涯神帖&#xff1a;《一个潜水多年的体制内的生意人来实际谈谈老百姓该怎么办&#xff1f;》 原作者&#xff1a;龙卧草庐 原文PDF链接&#xff1a;https://pan.quark.cn/s/7f8…

qt相关宏

官网宏&#xff1a; https://doc.qt.io/qt-5/qtglobal.html Q_UNLIKELY&#xff08;expr&#xff09;&#xff1a; 向编译器提示封闭条件&#xff0c;expr&#xff0c;很可能评估为false。 使用该宏可以帮助编译器优化代码。 Q_LIKELY&#xff08;expr&#xff09;&#xff1a;…

(整理中)01 - 模块机制

---- 整理自 王利涛老师 课程 文章目录 1. 可加载模块1.1 Linux内核的模块机制1.2 实验&#xff1a;hello模块1.3 内核模块的构成 KDIR : ${PWD}/../../linux-5.10.4clean:make -C ( K D I R ) M (KDIR) M (KDIR)M(PWD) modules cleanKDIR : ${PWD}/../../linux-5.10.4clean:…

Vue3网站用户引导功能【Intro.js】

一、介绍 Intro.js 是一个用于创建网站用户引导、功能介绍和教程的 JavaScript 库。它允许开发者通过步骤和提示突出显示网站上的特定元素&#xff0c;以帮助用户更好地了解和使用网站的功能。以下是 Intro.js 的一些关键特点和用法介绍&#xff1a; 更多Intro.js 功能网址&a…

mac批量修改图片格式

1. 当前窗口在word文档&#xff0c;选择工具-》宏-》点击宏 2. 弹出弹框&#xff0c;起个宏名1&#xff0c;点击2添加一个宏。 输入以下代码&#xff1a; Sub 图片格式统一()图片格式统一 宏Dim iDim Height, WeightHeight 200 改成自己的高度Weight 350 改成自己的宽度On E…

STM32-GPIO

一、GPIO简介 GPIO&#xff08;General Purpose Input Output&#xff09;通用输入输出口 可配置8种输入输出模式 引脚电平&#xff1a;0V~3.3V&#xff0c;部分引脚可容忍5V 输出模式下&#xff1a;可控制端口输出高低电平&#xff0c;用以驱动LED、控制蜂鸣器、模拟通信协议输…

MIT_线性代数笔记:第 12 讲 图、网络、关联矩阵

目录 图和网络 Graphs & Networks关联矩阵&#xff08;Incidence matrices&#xff09;矩阵的零空间矩阵列空间矩阵的左零空间矩阵的行空间 本讲讨论线性代数在物理系统中的应用。 图和网络 Graphs & Networks “图”就是“结点”和“边”的一个集合。 边线上的箭头代…

力扣11.盛最多水的容器

题目描述 思路 用双指针法。 每次向内移动较短的那个板&#xff0c;能带来更大的效益。 代码 class Solution {public int maxArea(int[] height) {int res 0;int i 0,j height.length - 1;while(i < j){res height[i] < height[j] ? Math.max((j - i) * height…

2023.12.4 关于 Spring Boot 统一异常处理

目录 引言 统一异常处理 异常全部监测 引言 将异常处理逻辑集中到一个地方&#xff0c;可以避免在每个控制器或业务逻辑中都编写相似的异常处理代码&#xff0c;这降低了代码的冗余&#xff0c;提高了代码的可维护性统一的异常处理使得调试和维护变得更加容易&#xff0c;通…

photoshop实现抠图的步骤

实现抠图的主要步骤如下&#xff1a; 打开图片&#xff1a;用Photoshop打开需要抠图的图片。 选择抠图工具&#xff1a;在Photoshop工具栏中找到“套索工具”、“魔术棒工具”、“快速选择工具”等工具&#xff0c;选择其中一个作为抠图工具。 选择抠图区域&#xff1a;用抠图…

pytorch学习9-优化器学习

系列文章目录 pytorch学习1-数据加载以及Tensorboard可视化工具pytorch学习2-Transforms主要方法使用pytorch学习3-torchvisin和Dataloader的使用pytorch学习4-简易卷积实现pytorch学习5-最大池化层的使用pytorch学习6-非线性变换&#xff08;ReLU和sigmoid&#xff09;pytorc…

Linux swatch命令教程:如何监控系统活动(附案例详解和注意事项)

Linux swatch命令介绍 Swatch&#xff0c;全称为Simple Watcher&#xff0c;是一个简单的监视器&#xff0c;设计用于监控系统活动。为了使Swatch有用&#xff0c;它需要一个配置文件&#xff0c;该文件包含要查找的模式和在找到每个模式时要执行的操作。 Linux swatch命令适…

[头歌系统数据库实验] 实验3 MySQL的DDL语言

目录 第1关&#xff1a;将P表中的所有红色零件的重量增加6 第2关&#xff1a;把P表中全部红色零件的颜色改成蓝色 第3关&#xff1a;将SPJ表中由S5供给J4的零件P6改为由S3供应 第4关&#xff1a;将SPJ表中所有天津供应商的QTY属性值减少11&#xff08;用子查询方式&#x…

C标准输入输出函数

介绍 C语言中常用的输入输出函数包括&#xff1a; scanf&#xff1a;从标准输入设备&#xff08;通常是键盘&#xff09;读取数据。printf&#xff1a;将数据输出到标准输出设备&#xff08;通常是显示器&#xff09;。getchar&#xff1a;从标准输入设备读取一个字符。putcha…

云轴科技ZStack助力彬长矿业建设智能矿山

陕西彬长矿业集团有限公司&#xff08;简称彬长矿业&#xff09;选择云轴科技ZStack智能矿山云解决方案建设云基础设施&#xff1a;ZStackCube超融合一体机部署在西咸云基地机房构建私有云资源池&#xff0c;ZStackCMP多云管理平台对西咸云基地机房以及各矿井生产服务中心资源进…

【每日OJ —— 94. 二叉树的中序遍历】

每日OJ —— 94. 二叉树的中序遍历 1.题目&#xff1a;94. 二叉树的中序遍历2.解法2.1.算法讲解2.2.代码实现2.3.提交通过展示 1.题目&#xff1a;94. 二叉树的中序遍历 2.解法 2.1.算法讲解 1.首先如果在每次每个节点遍历的时候都去为数组开辟空间&#xff0c;这样的效率太低…