B站: 迷途小书童的Note;微信公众号: Dev_Club;个人微信:xituxiaoshutong100

Flask教程(六)Cookie和Session

Flask Web 迷途小书童 0评论

软硬件环境

  • Windows 10 64bit
  • Anaconda3 with python 3.7
  • PyCharm 2019.3
  • Flask 1.1.1

视频看这里

此处是youtube的播放链接,需要科学上网。喜欢我的视频,请记得订阅我的频道,打开旁边的小铃铛,点赞并分享,感谢您的支持。

什么是Cookie

Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,实际上Cookie是服务器在本地机器上存储的一小段文本,并随着每次请求发送到服务器。客户端和服务器的交互图如下

flask

flask

Cookie实例

Flask中,通过flask对象的make_response来构建响应体,然后通过set_cookie来设置cookie,它是一个键值对数据。下面是一个Cookie的简单实例

run.py文件内容

from flask import Flask, make_response

app = Flask(__name__)


@app.route('/cookie', methods=['GET'])
def cookie():

    resp = make_response("<html><body>Cookie</body></html>")
    resp.set_cookie('name', 'xugaoxiang')
    return resp


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

启动Flask服务后,访问http://127.0.0.1:5000/cookie

flask

这里推荐个chrome浏览器的Cookie插件,它可以很方便的查看、修改、删除Cookie信息。

在这个例子中,我们看到保存在本地的Flask服务端设置的Cookie信息,(‘name’:’xugaoxiang’)

flask

什么是Session

Session跟上面的Cookie非常类似,只不过Session是存储在服务器端的,在实际场景中经常遇到的登录失效,就是因为Session在起作用。

Session实例

Flask中,使用session对象来存放键值对。需要注意的是,使用Session需要设置app.secret_key。来看下面的实例

run.py文件内容

from flask import Flask, render_template, make_response, session

app = Flask(__name__)
app.secret_key = "test"


@app.route('/session', methods=['GET'])
def sess():

    resp = make_response("<html><body>Session.<a href='/getValue'>Get Value</a></body></html>")
    session['name'] = 'xugaoxiang'
    return resp


@app.route('/getValue')
def getValue():
    if 'name' in session:
        name = session['name']
        return render_template('getvalue.html', name=name)


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

来到模板文件,getvalue.html文件内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>GetValue</title>
</head>
<body>
<p>Session value: <b> {{ name }} </b> </p>
</body>
</html>

启动Flask服务,访问http://127.0.0.1:5000/session

flask

点击超链接,进入getvalue.html页面

flask

源码下载

https://github.com/xugaoxiang/FlaskTutorial

喜欢 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址