首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Flask 学习-65.消息闪现 flash

Flask 学习-65.消息闪现 flash

作者头像
上海-悠悠
发布于 2022-09-19 07:43:26
发布于 2022-09-19 07:43:26
61900
代码可运行
举报
运行总次数:0
代码可运行

前言

一个好的应用和用户界面都需要良好的反馈。如果用户得不到足够的反馈,那么应用 最终会被用户唾弃。 Flask 的闪现系统提供了一个良好的反馈方式。闪现系统的基 本工作方式是:在且只在下一个请求中访问上一个请求结束时记录的消息。

设置 flash()

flask提供了一个非常有用的flash()函数,它可以用来“闪现”需要提示给用户的消息,比如当用户登录成功后显示“欢迎回来!”。 在视图函数调用flash()函数,传入消息内容,flash()函数把消息存储在session中,我们需要在模板中使用全局函数get_flashed_messages()获取消息并将它显示出来。 flash是基于session, 所以必须要设置秘钥 secret_key

flash()函数源代码

  • message 消息内容
  • category 消息类别,可以不用传,默认缺省值”message” def flash(message: str, category: str = "message") -> None: """Flashes a message to the next request. In order to remove the flashed message from the session and to display it to the user, the template has to call :func:`get_flashed_messages`. .. versionchanged:: 0.3 `category` parameter added. :param message: the message to be flashed. :param category: the category for the message. The following values are recommended: ``'message'`` for any kind of message, ``'error'`` for errors, ``'info'`` for information messages and ``'warning'`` for warnings. However any kind of string can be used as category. """ # Original implementation: # # session.setdefault('_flashes', []).append((category, message)) # # This assumed that changes made to mutable structures in the session are # always in sync with the session object, which is not true for session # implementations that use external storage for keeping their keys/values. flashes = session.get("_flashes", []) flashes.append((category, message)) session["_flashes"] = flashes message_flashed.send( current_app._get_current_object(), # type: ignore message=message, category=category, )

基本使用示例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@app.route('/login')
def login():
    flash('welcome to back!')
    return {'msg': 'ok'}

get_flashed_messages 获取flash 消息

get_flashed_messages(with_categories=False, category_filter=()),

  • with_categories 默认False只返回消息内容,设置True会以元祖返回消息类别和内容
  • 如果不传递 category_filter,取出上面存储的所有分类传递的值 def get_flashed_messages( with_categories: bool = False, category_filter: t.Iterable[str] = () ) -> t.Union[t.List[str], t.List[t.Tuple[str, str]]]: """Pulls all flashed messages from the session and returns them. Further calls in the same request to the function will return the same messages. By default just the messages are returned, but when `with_categories` is set to ``True``, the return value will be a list of tuples in the form ``(category, message)`` instead. Filter the flashed messages to one or more categories by providing those categories in `category_filter`. This allows rendering categories in separate html blocks. The `with_categories` and `category_filter` arguments are distinct: * `with_categories` controls whether categories are returned with message text (``True`` gives a tuple, where ``False`` gives just the message text). * `category_filter` filters the messages down to only those matching the provided categories. See :doc:`/patterns/flashing` for examples. .. versionchanged:: 0.3 `with_categories` parameter added. .. versionchanged:: 0.9 `category_filter` parameter added. :param with_categories: set to ``True`` to also receive categories. :param category_filter: filter of categories to limit return values. Only categories in the list will be returned. """ flashes = _request_ctx_stack.top.flashes if flashes is None: _request_ctx_stack.top.flashes = flashes = ( session.pop("_flashes") if "_flashes" in session else [] ) if category_filter: flashes = list(filter(lambda f: f[0] in category_filter, flashes)) if not with_categories: return [x[1] for x in flashes] return flashes

这个flash只能一个视图函数中取,只要有一个视图函数取过了,那其他视图函数就不能获取,本质是调用session.pop(“_flash”) 但是在同一个视图函数里面可以无限的取值。

使用示例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from flask import Flask, current_app, flash, get_flashed_messages

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

@app.route('/login')
def login():
    flash('welcome to back!')
    return {'msg': 'ok'}

@app.route('/get')
def get():
    msg = get_flashed_messages()
    return {'msg': msg}

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

先访问/login,就会有闪现消息,再访问/get取值

category 消息分类参数使用

category 设置消息类别

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@app.route('/login')
def login():
    flash('welcome to back!', category='login')
    flash('admin', category='user')
    return {'msg': 'ok'}

with_categories默认False 得到的值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
['welcome to back!', 'admin']

with_categories设置为True

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@app.route('/get')
def get():
    msg = get_flashed_messages(with_categories=True)
    print(msg)
    return {'msg': msg}

得到msg值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[('login', 'welcome to back!'), ('user', 'admin')]

category_filter 参数可以设置过滤消息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@app.route('/get')
def get():
    msg = get_flashed_messages(with_categories=True, category_filter=['login'])
    print(msg)
    return {'msg': msg}

过滤后的结果

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[('login', 'welcome to back!')]

flash 消息闪现一般用在前端页面上,比如当用户登录成功后显示“欢迎回来!”,可以用来“闪现”需要提示给用户的消息。 在模板中调用get_flashed_messages()相关示例参考官方文档https://dormousehole.readthedocs.io/en/latest/patterns/flashing.html

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-09-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
【玩转腾讯云】【腾讯云机器翻译TMT】机器翻译入门
通过https://cloud.tencent.com/register注册腾讯云账号
LinSP
2020/05/02
10.2K2
利用腾讯云API(Python)对字幕文件进行翻译
本篇文章使用腾讯云的机器翻译来对英语字幕文件进行翻译,接口的需要的SecretId和SecretKey请自行上腾讯云https://console.cloud.tencent.com/cam/capi获取,运行环境为Python3.8,如使用Python2,请注意注释内容,并进行相对于的修改,程序还需要用到腾讯云的Python SDK:
Duckweeds7
2021/06/24
2.8K0
利用腾讯云API(Python)对字幕文件进行翻译
用Python实现减重软件
体重保持是现代人需要生活关注的一项事情。我们用Python实现体重管理软件,并根据你吸收和消耗的卡路里的余值进行餐食推荐。
mariolu
2024/03/19
2990
混元大模型,API免费发放,又一个王炸级更新!
混元大模型(英文名:HunYuan)是由腾讯开发的大型语言模型,它可以进行丰富的语义理解和计算,为用户提供问答式的服务。基于大量的训练数据和先进的深度学习技术,混元大模型能够处理各种类型的问题和任务,涵盖知识问答、建议、解决问题等多个方面。
不惑
2024/05/08
1.8K0
混元大模型,API免费发放,又一个王炸级更新!
Serverless Cloud Function 开发实践
本文将讲述如何使用 Serverless Cloud Function 开发语言翻译工具。
lqmeta
2020/06/15
2.2K1
Serverless Cloud Function 开发实践
一个简单Python脚本,实现轻量应用服务器防火墙自动添加客户端公网IP访问
当需要设置轻量级服务器的防火墙策略时,一般用户都是需要手动去设置开放指定公网IP访问轻量服务器,这样也是比较麻烦的。就此作者想了下,如何避免每次手动去修改公网IP,这样也是非常麻烦,如果腾讯云轻量服务器控制台能增加一个安全选项,实现浏览器获取当前用户公网IP并一键设置允许常用端口访问。这样大大的增加用户安全体验下。
邓鹏
2024/04/26
3110
智能结构化助力在大规模突发事件背景下社交媒体图片中时间、地点等关键信息的有效提取
在大规模社会性突发事件背景下,由于传播渠道有限和实时性要求,处于困境中的个人往往会在公开社交媒体上发布求助信息;
月小水长
2025/01/07
6260
通过云API创建云主机,并指定IP地址
蛋蛋
2023/07/14
1.1K1
Python实现的食谱生成器
想象一下:你正在超市或者菜市场寻找晚餐灵感,但想到昨天餐馆点的好吃的菜,但并不知道那个配方。
mariolu
2024/03/18
4510
利用Python调用云Api实现全地域同步轻量应用服务器密钥并共享给云服务器
请注意 为了保障您的账户以及云上资产的安全 请谨慎保管SecretId 与 SecretKey 并定期更新 删除无用权限
小宇-xiaoyu
2022/03/04
1.7K0
腾讯云智能结构化OCR初体验:开启高效数据提取之旅
在数字化浪潮的推动下,企业面临着海量文档数据的处理挑战。传统的人工录入方式不仅效率低下,而且容易出错,严重影响了企业的运营效率。光学字符识别(OCR)技术的出现,为这一难题提供了有效的解决方案。腾讯云智能结构化OCR,凭借其卓越的技术实力和广泛的应用场景,正在成为企业数字化转型的重要助力。
LucianaiB
2025/01/10
1840
腾讯云一句话识别接口调用
使用主账号登录语音识别控制台(https://console.cloud.tencent.com/asr),开通语音识别服务。
向东平
2025/05/09
2100
使用python脚本批量升级redis版本
redis实例如果要跨区热迁移,实例需支持多可用区。2.8及以下版本不支持升级支持多可用区,故2.8及以下版本需升级到4.0及以上版本(数据切换过程中,实例将存在1分钟以内的只读状态(等待数据同步完成),以及连接闪断(秒级)的影响,需要业务具备自动重连的机制)。
vic@TX
2022/11/24
7320
腾讯云API弹性公网IP踩坑
由于自己管理的云服务器数量比较多,时不时需要更换IP,在管理台上一下下点击,实在浪费时间,于是就想到了通过API调用的方式,将更换IP一系列动作,全部集成到Python代码里面,实现一行命令,完成IP更换,由于人懒,就先
用户2174879
2018/10/23
32.3K1
腾讯云API弹性公网IP踩坑
腾讯云 TI 平台部署与调用DeepSeek-R1大模型的实战指南
今天我们将继续探讨如何部署一个私有化的 DeepSeek-R1 大模型,具体的部署过程我们将利用腾讯云的 TI 平台进行操作。当前,腾讯云 TI 平台为用户提供了免费体验的满血版 DeepSeek-R1 大模型,同时该平台还提供了开放的 API 接口服务,用户可以方便地将其接入到自己的平台中,进行定制化使用。接下来,我们将深入讲解如何快速实现 DeepSeek-R1 大模型的私有化部署,帮助大家更高效地掌握整个流程,确保能够顺利地将这一先进技术应用到自己的实际场景中。
努力的小雨
2025/02/05
6980
【腾讯云AI绘画】 老师,我想学绘画
AI 绘画(AI Art)是一款 AI 图像生成与编辑技术 API 服务,可以结合输入的图片或文本智能创作出与输入相关的图像内容,具有更强大的中文理解能力、更多样化的风格选择,以及更偏东方审美的绘画创作能力,更好支持中文场景下的建筑风景生成、古诗词理解、水墨剪纸等中国元素风格生成,以及各种动漫、游戏风格的高精度图像生成和风格转换,为高质量的内容创作、内容运营提供技术支持。
不惑
2023/12/06
7331
【腾讯云AI绘画】 老师,我想学绘画
从零开始使用腾讯云Java SDK
腾讯云开发者工具套件(SDK)是云 API 3.0 平台的配套工具。本文以 Java SDK 为例,介绍如何使用、调试并接入腾讯云产品 API。
zhijiehou
2021/06/25
13K2
利用Python调用云Api实现多地域快速修改轻量应用服务器密码
请注意 为了保障您的账户以及云上资产的安全 请谨慎保管SecretId 与 SecretKey 并定期更新 删除无用权限
小宇-xiaoyu
2022/03/30
2.3K3
利用Python调用云Api实现将cvm安全组配置复制到轻量应用服务器
虽然轻量应用服务器并没有安全组,但是我们可以用云api将cvm的安全组配置复制下来,生成代码调用轻量应用服务器相关api将cvm安全组配置添加到轻量防火墙
小宇-xiaoyu
2022/03/04
1.3K0
利用Python调用云Api实现多地域同步创建TAT命令
请注意 为了保障您的账户以及云上资产的安全 请谨慎保管SecretId 与 SecretKey 并定期更新 删除无用权限
小宇-xiaoyu
2022/03/23
2.6K2
推荐阅读
相关推荐
【玩转腾讯云】【腾讯云机器翻译TMT】机器翻译入门
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档