首页 > 其他 > 详细

Flask之flash

时间:2020-07-05 11:39:40      阅读:44      评论:0      收藏:0      [点我收藏+]

一、flash简单用法

  好的应用程序和用户界面都与反馈有关。如果用户没有得到足够的反馈,他们可能最终会讨厌该应用程序。Flask提供了一种非常简单的方法,可以通过闪烁系统向用户提供反馈。基本上,闪存系统使得可以在请求结束时记录一条消息,并在下一个(也只有下一个)请求中访问它。通常将其与布局模板结合使用以显示消息。

在使用flash过程中需要注意以下几个方面:

1、使用之前需要设置秘钥

flash是基于session来进行完成,而session中是必须要设置秘钥的,所以flash是必须要设置秘钥的。

2、设置值

设置值是通过flash(‘1234‘)这样的形式来设置的,但是假如有不同类型的值可以通过category参数来对设置的值进行分类。

from flask import Flask, flash, redirect

app = Flask(__name__)

app.secret_key = ‘abcdef‘ @app.route(
/login) def login(): flash(aaa) #设置基本的值 flash(bbb, category=typeb) #分类设置值 return redirect(/index) if __name__ == __main__: app.run()

3、取值

flash中取值使用的是get_flashed_messages方法,如果需要取出指定分类的数据,输入category_filter参数即可:

from flask import Flask, flash, redirect, get_flashed_messages

app = Flask(__name__)

app.secret_key = abcdef


@app.route(/login)
def login():
    flash(aaa)  # 设置基本的值
    flash(bbb, category=typeb)
    return redirect(/index)


@app.route(/index)
def index():
    print(get_flashed_messages())  # [‘aaa‘, ‘bbb‘]
    print(get_flashed_messages(category_filter=typeb))  # [‘bbb‘]
    return index


if __name__ == __main__:
    app.run()

需要注意的是,取值是通过session.pop()这样的方法,一旦第一次取走后,访问index页面,之前的值就不存在了,除非再重新进行login函数赋值操作。

所以,flash就是一个基于session来实现的保存数据集合的一种技术,它的特点就是使用一次数据就会被删除。

二、应用场景

一般的应用场景就是在跳转页面后提示信息,比如,登录成功或者失败之类的提示语。

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

app = Flask(__name__)

app.secret_key = abcdef


@app.route(/login)  # 请求http://127.0.0.1:5000/login?username=zhangsan
def login():
    username = request.args[username]
    print(username)
    if username == zhangsan:
        flash(登录成功)
        return redirect(/index)
    else:
        flash(登录失败)  # 设置基本的值
        return render_template(login.html)


@app.route(/index)
def index():
    print(get_flashed_messages())  # [‘登录成功‘]
    return index


if __name__ == __main__:
    app.run()

当然你可以直接将flash的消息渲染在模板文件中,只需要使用get_flashed_messages方法即可。

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{{ get_flashed_messages() }} <!--闪现消息-->
</body>
</html>

 

 

 

 

 

Flask之flash

原文:https://www.cnblogs.com/shenjianping/p/13238008.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!