首页 > 其他分享 >falsk之闪现

falsk之闪现

时间:2024-11-04 16:42:46浏览次数:2  
标签:__ get 闪现 falsk messages flashed 消息 app

一、闪现的用途

在 Flask 中,“闪现消息”(Flash Messages)是一种用于在不同请求之间传递一次性消息的机制。这在 Web 应用中非常实用,特别是在需要向用户展示短暂的通知、错误消息或者确认信息时。

1、闪现的用途

  1. 用户反馈:在用户提交表单后,告诉用户操作成功或失败,比如“提交成功”或“登录失败”。

  2. 跨请求传递信息:由于 HTTP 请求是无状态的,闪现消息为在不同请求间传递临时信息提供了一种便捷方式。

  3. 通知:提示用户关于系统状态或需要注意的内容。

2、闪现的本质

  闪现消息基于会话(Session)机制实现。它在应用程序的请求中存储消息,通常只在下次请求中有效。具体来说,它利用会话存储在服务器端的数据在不同请求之间保持用户状态。

  当使用 flash 函数时,Flask 将消息存储在当前会话中。而在下一个请求中,您可以通过 get_flashed_messages 函数检索这些消息。因为消息被设置为一次性,所以在检索后会自动删除,确保不会在后续请求中重复出现。

3、小案例

flash('name提交成功!')  存消息

get_flashed_messages() 取消息

from flask import Flask, flash, render_template, redirect, url_for, get_flashed_messages

app = Flask(__name__)
app.secret_key = 'your_secret_key'  # 必须设置以支持会话

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/submit', methods=['POST'])
def submit():
    # 假设在此处理表单提交
    # 成功处理后闪现一条消息
    flash('表单提交成功!')
    return redirect(url_for('index'))

@app.route('/display')
def display():
    messages = get_flashed_messages()
    return render_template('display.html', messages=messages)

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

html页面

# index
<!doctype html>
<html>
<head>
    <title>闪现消息示例</title>
</head>
<body>
    <form action="{{ url_for('submit') }}" method="post">
        <input type="text" name="name" placeholder="输入名字">
        <input type="submit" value="提交">
    </form>
</body>
</html>

# display
<!doctype html>
<html>
<head>
    <title>显示消息</title>
</head>
<body>
    {% with messages = get_flashed_messages() %}
      {% if messages %}
        <ul>
          {% for message in messages %}
            <li>{{ message }}</li>
          {% endfor %}
        </ul>
      {% endif %}
    {% endwith %}
</body>
</html>

4、设置分类取出

from flask import Flask, flash, render_template, redirect, url_for, get_flashed_messages

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

@app.route('/submit')
def submit():
    flash('信息已成功提交!', 'success')
    flash('发生一个警告!', 'warning')
    return redirect(url_for('display'))

@app.route('/display')
def display():
    return render_template('display.html')

if __name__ == '__main__':
    app.run(debug=True, port=5001)

html 页面

<!doctype html>
<html>
<head>
    <title>显示消息</title>
</head>
<body>
    {% with messages = get_flashed_messages(with_categories=True) %}
      {% if messages %}
        <ul>
          {% for category, message in messages %}
            <li class="{{ category }}">{{ message }}</li>
          {% endfor %}
        </ul>
      {% endif %}
    {% endwith %}
</body>
</html>

<style>
    .success { color: green; }
    .warning { color: orange; }
    .error { color: red; }
</style>

补充:

Flask 提供了 flash() 和 get_flashed_messages() 函数来帮助在网页重定向后传递简短的消息。get_flashed_messages() 通常用于在模板中获取这些消息进行展示。

下面是对 {% with messages = get_flashed_messages(with_categories=True) %} 的详细介绍:

基本功能

  • **get_flashed_messages()**:

    • 这个函数用于从 Flask 的消息系统中检索已存储的消息。这些消息是通过 flash() 函数添加的。
    • 该函数有两个主要参数:
      1. with_categories: 布尔值。如果设置为 True,则返回消息时包含类别信息。
      2. category_filter: 可选的列表参数,允许您检索特定类别的消息。
  • **with_categories=True**:

    • 当设置为 True 时,get_flashed_messages() 返回一个包含类别和消息内容的元组列表。
    • 这意味着每条消息将以 (category, message) 的形式返回,使您可以在模板中根据类别对消息进行不同的处理(例如不同的样式)。

使用 {% with %} 控制结构

  • **{% with ... %}**:这是一种 Jinja2 模板的控制结构,用于临时存储一个变量,以便在模板的一部分中使用。
  • 在 {% with messages = get_flashed_messages(with_categories=True) %} 中,with 语句将 get_flashed_messages() 的结果分配给变量 messages
  • 这样做的目的是在同一个模板块内高效地访问并处理这些消息,而不需要多次调用 get_flashed_messages()

 

标签:__,get,闪现,falsk,messages,flashed,消息,app
From: https://www.cnblogs.com/dgp-zjz/p/18525669

相关文章

  • 一步到位!教你如何正确设置Tkinter窗口位置,拒绝闪现(怎么解决tkinter设置窗口位置总是在
    文章目录......
  • 基于Python的医疗诊断系统 基于Falsk的医院挂号系统 (附源码 LW PPT 包调试)
    博主介绍:✌专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、机器学习等设计与开发。主要内容:免费功能设计、开题报告、任务书、中期......
  • flask 闪现(flash)
    闪现(flash)flask中得闪现存放数据的地方,一旦取了,数据就没了实现跨请求间传递数据基本使用设置:flash('欢迎你')取:get_flashed_messages()fromflaskimportFlask,request,render_template,redirect,flash,get_flashed_messagesapp=Flask(__name__)app.debug......
  • flask中cbv加装饰器、闪现(flash)、g对象、蓝图、flask-session、wtforms
    开源项目,可写在简历里1#开源项目sql审核平台2-https://gitee.com/cookieYe/Yearning3-https://gitee.com/rtttte/Archery cbv加装饰器1fromflaskimportFlask2fromflask.viewsimportMethodView34app=Flask(__name__)56app.debug=True7......
  • Flask 生产环境部署(Falsk + uWSGI + nginx)
    前言最近自己做了个Falsk小项目,在部署上服务器的时候,发现虽然不乏相关教程,但大多都是将自己项目代码复制出来,不讲核心逻辑,不太简洁,于是将自己部署的经验写成内容分享出来。uWSGI简介uWSGI:一种实现了多种协议(包括uwsgi、http)并能提供服务器搭建功能的Python包Differenc......
  • 但是mac本连接苹果机时总是闪现请信任该电脑,导致不能连接电脑的解决方案
    解决方法是把USB进程杀掉,拔下设备,然后重新连接。终端运行命令杀掉USB进程:$sudokillall-STOP-cusbd然后需要输入电脑解锁密码,输入密码(不会显示,直接输入就好)之后,回车。然后拔下设备,重新连接。在macOS中,sudokillall-STOP-cusbd 命令的含义如下:sudo:以管理员权限......
  • 记一次部署vika源码以及安装Falsk框架到linux服务器
    前言接受到需求,需要把python项目vika的源码修改部分内容后,部署到服务器,然后再安装一个python的快速开发框架Falsk。部署vika1.什么是vika?Vika PythonSDK是对维格表FusionAPI的官方封装,提供类似DjangoORM风格的API。2.下载源码前往源码地址(https://github.com/vikadat......
  • Flask之闪现(flash)
    作用在某次请求中,有些数据,可以放在闪现中以便下次请求,从闪现中取出来使用。特点:取一次就没了,下次再取就是空的谁(浏览器)放的,谁(浏览器)才能取到实际上放了session中了使用方式导入fromflaskimportFlask,flashapp=Flask(__name__)#需要配置秘钥app.secret_key......
  • Falsk五
    请求扩展before_request:请求来了会走,依次从上往下执行,但是如果其中一个返回了响应对象,后续就不走了,视图函数也不走after_request:请求走了,会从下往上依次执行,必须返回相应对象假设:写了3个before_request  第二个返回了响应对象写了3个after_request 所有的af......
  • session源码、闪现、请求扩展
    session源码'''1app.session_interface默认是某个类的对象,以后全局对象session,就是SecureCookieSessionInterface()的对象2请求来了,会执行这个对象的:open_session方法3请求走了,会执行这个对象的:save_session方法4找出上面讲的--》读源码--》app.run()---->run_simp......