Flask教程(4)–Cookie和Session

软硬件环境

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

Cookie和Session

什么是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', 'waws')
    return resp

if __name__ == '__main__':
    app.run(host="127.0.0.1",port=5000,debug=True)
复制代码

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

flask

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

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

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='https://juejin.cn/getValue'>Get Value</a></body></html>")
    session['name'] = 'waws'
    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(host="127.0.0.1",port=5000,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页面

Snipaste_2021-02-16_22-08-21.png

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享