(十四)Flask之闪现flash

news2024/11/23 13:36:39

闪现—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('/')
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实现的:

在这里插入图片描述

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

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

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

相关文章

『App自动化测试之Appium基础篇』| 从定义、原理、环境搭建、安装问题排查等深入了解Appium

『App自动化测试之Appium基础篇』| 从定义、原理、环境搭建、安装问题排查等深入了解Appium 1 关于Android UI自动化测试2 Appium简介3 Appium原理3.1 Android端过程3.2 iOS端过程 4 补充内容5 JDK下载6 JDK配置7 SDK下载8 SDK配置9 配置Android环境10 安装NodeJs11 解决node安…

MyBatis 常见面试题

目录 1.MyBatis——概述1.1.什么是 ORM 框架&#xff1f;1.2.✨谈谈对 MyBatis 的理解。1.3.使用 MyBatis 相对于直接使用 SQL 有哪些优点&#xff1f;1.4.MyBatis 有什么优缺点&#xff1f;1.5.✨MyBatis 的分层结构是什么样的&#xff1f;1.6.✨MyBatis 的执行流程是什么样的…

echerts 循环图 显示获取不到id

报错&#xff1a;Uncaught TypeError: Cannot read properties of null (reading getAttribute)&#xff0c; 我所出现的问题是 1&#xff0c;我在循环方法的时候 id没有从0开始&#xff0c;把id变成从0开始循环 2&#xff0c;设置myChart 全局属性 呈现效果 代码 html 动态绑…

Web开发-问题-前后端交互数据不一致

0x01 问题描述 所用的技术&#xff1a;VueSpring Boot后端传给前端数据&#xff1a; [Student(studentId1, personorg.fatmansoft.teach.models.Person4abe6020, major软件工程, className一班, grade一年级), Student(studentId2, personorg.fatmansoft.teach.models.Person…

Ant Design Vue(v1.7.8)a-table组件的插槽功能

<template slot"unitShow" slot-scope"text, record"> slot"unitShow" 表示插槽名&#xff08;见具名插槽&#xff09; slot-scope"text, record" 表示作用域插槽接收从<a-table>组件传递进来的两个参数&#xff0c;其中…

回溯算法:复原IP地址 子集 子集II

93.复原IP地址 思路&#xff1a; 与分割回文串相似&#xff0c;复原ip地址是将给定字符串分割成点分十进制的四段&#xff0c;切割问题就可以使用回溯搜索法把所有可能性搜出来。回溯三部曲&#xff1a; 递归参数&#xff1a;除了传入的需要分割的字符串&#xff0c;仍然需要…

介绍几个有意思的 GitHub 仓库

大家好&#xff0c;我是风筝。 今天介绍几个很有意思的 github 开源项目&#xff0c;看过之后就会发现&#xff0c;github 果然深意暗藏。 GitHub对于程序员来说&#xff0c;再熟悉不过了&#xff0c;绝大多数时候&#xff0c;我们到上面都是为了学习高质量的源代码&#xff…

Windows循环检测,直到网络通/断后执行指定命令

前言 前几天&#xff0c;一个朋友让我帮他做个脚本或者批处理&#xff0c;要实现的功能很简单&#xff1a;开机时检测网络是否联通&#xff0c;如果联通了就执行一个指定的程序&#xff0c;然后脚本就可以退出了。 批处理的解决方法 手动操作时&#xff0c;我们通常使用ping…

【hacker送书第9期】算法训练营(入门篇)

第9期图书推荐 内容简介作者简介精彩书评图书目录概述参与方式 内容简介 本书以海量图解的形式&#xff0c;详细讲解常用的数据结构与算法&#xff0c;又融入大量的竞赛实例和解题技巧。通过对本书的学习&#xff0c;读者可掌握12种初级数据结构、15种常用STL函数、10种二叉树和…

HarmonyOS鸿蒙操作系统架构

目录 1. 分布式架构&#xff1a; 2. 统一的开发平台&#xff1a; 3. 多内核共享&#xff1a; 4. 自适应界面&#xff1a; 5. AR、VR、MR支持&#xff1a; 6. 安全和隐私保护&#xff1a; 7. AI集成&#xff1a; 8. 应用生态系统&#xff1a; 9. 开源和开放&#xff1a…

Maxwell学习笔记

1 概述 Maxwell 是由美国 Zendesk 开源&#xff0c;用 Java 编写的 MySQL 实时抓取软件。 实时读取MySQL 二进制日志 Binlog&#xff0c;并生成 JSON 格式的消息&#xff0c;作为生产者发送给 Kafka&#xff0c;Kinesis、RabbitMQ、Redis、Google Cloud Pub/Sub、文件或其它平台…

webpack学习-2.管理资源

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

<Linux>(极简关键、省时省力)《Linux操作系统原理分析之文件管理(3)》(24)

《Linux操作系统原理分析之文件管理&#xff08;3&#xff09;》&#xff08;24&#xff09; 7 文件管理7.5 文件存储空间的管理7.6 文件的共享和保护7.6.1 文件存取控制7.6.2 文件共享的实现方法7.6.3 文件的备份转储 7 文件管理 7.5 文件存储空间的管理 位示图 对每个磁盘…

使用 PyTorch 完全分片数据并行技术加速大模型训练

本文&#xff0c;我们将了解如何基于 PyTorch 最新的 完全分片数据并行 (Fully Sharded Data Parallel&#xff0c;FSDP) 功能用 Accelerate 库来训练大模型。 动机 &#x1f917; 随着机器学习 (ML) 模型的规模、大小和参数量的不断增加&#xff0c;ML 从业者发现在自己的硬件…

harmony开发之image组件的使用

HarmonyOS是一款面向万物互联时代的、全新的分布式操作系统。 在传统的单设备系统能力基础上&#xff0c;HarmonyOS提出了基于同一套系统能力、适配多种终端形态的分布式理念&#xff0c;能够支持手机、平板、智能穿戴、智慧屏、车机、PC、智能音箱、耳机、AR/VR眼镜等多种终端…

在KeyarchOS上体验WildFly

一、浪潮信息KeyarchOS简单介绍 KeyarchOS具备稳定可靠、高效软硬协同、全天候运维、安全可信等特性,增强了对云计算、人工智能等场景的支持,性能稳定性领先,生态完善,符合金融、政务、能源、交通、通信、教育、医疗等关键行业的应用要求。具备非常广泛的应用。 官方地址&…

BACnet I/O模块在水利环境监测全自动控制系统中的应用:稳定、高效、实时

前言 “绿水青山就是金山银山”&#xff0c;水利环境一直是国际生态部门关注的重点。随着经济的发展、针对水利环境的监管也日趋严格&#xff0c;尤其是重点河、湖水系、水源地、城市内河等成为重点监管对象&#xff0c;监管力度也愈来愈严格&#xff0c;监测布点密度不断加大。…

linux交换分区管理SWAP

6.2.5 交换分区管理SWAP 6.2.5.1 概念 作用&#xff1a; ”提升“内存容量&#xff0c;防止OOM&#xff08;out of memory&#xff0c;内存溢出&#xff09;。 ​ 对应windows中的虚拟内存。 ​ 从功能上讲&#xff0c;交换分区主要是在内存不够用的时候&#xff0c;将部分内…

【Azure 架构师学习笔记】- Azure Databricks (2) -集群

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (1) - 环境搭建 前言 在上文中提到了ADB 的其中一个核心就是集群&#xff0c;所以这里专门研究一下ADB 的集群。 ADB 集群 首先了解一下ADB…

git 使用记录

远程仓库为空初始化 初始化本地仓库 git init 在本地仓库书写代码&#xff08;这里可以编辑一个文本文件做测试&#xff0c;如hello.txt&#xff09; 5&#xff09;执行&#xff1a;git add 要让git管理的文件&#xff08;git add hello.txt&#xff09;>执行完此操作将我…