欢迎访问我的网站,希望内容对您有用,感兴趣的可以加入免费知识星球。

Flask教程(六)Cookie和Session

Flask Web 迷途小书童 4年前 (2020-03-19) 4708次浏览 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

Flask系列教程

更多 Flask 教程,请移步

https://xugaoxiang.com/category/python/flask/

喜欢 (0)

您必须 登录 才能发表评论!

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

请关闭 Adblock 等类似浏览器插件,然后刷新页面访问,感谢您的支持!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.