Flask 入门系列 Cookie与Session的介绍
本文将介绍 Flask 中 Cookie 和 Session 的使用方法,并给出两个示例说明。
Cookie
什么是 Cookie
Cookie 是存储在客户端中的数据。它可以在不同请求之间传递,并且可以被服务器读取和修改。Cookie 最常见的应用场景是保存用户的状态信息,比如用户的登录状态。
设置 Cookie
在 Flask 中设置 Cookie 很简单,可以使用 make_response
方法来设置 Cookie:
from flask import make_response
@app.route('/')
def set_cookie():
resp = make_response('set cookie')
resp.set_cookie('username', 'example')
return resp
在上述代码中,我们定义了一个路由函数 set_cookie
,当用户访问该路由时,会返回一个字符串 "set cookie",同时设置了一个名为 username
的 Cookie,值为 example
。
获取 Cookie
在 Flask 中获取 Cookie 也很简单,可以使用 request.cookies
属性来获取:
from flask import request
@app.route('/')
def get_cookie():
username = request.cookies.get('username')
return 'Hello, {}'.format(username)
在上述代码中,我们定义了一个路由函数 get_cookie
,当用户访问该路由时,会从 Request 对象中获取名为 username
的 Cookie,并返回一个字符串 "Hello, {username}"
。
示例说明
下面给出一个具体示例说明。假设一个用户登录成功之后需要跳转到他的个人主页,并展示出他的用户名。在登录成功时,我们可以设置一个名为 username
的 Cookie,值为用户的用户名。然后在用户访问个人主页时,从 Request 对象中获取 Cookie 中的用户名,展示在页面上。
# 登录成功时设置 Cookie
from flask import make_response
@app.route('/login', methods=['POST'])
def login():
username = request.form['username']
# 验证用户登录信息是否正确
# ...
resp = make_response('login succeed')
resp.set_cookie('username', username)
return resp
# 用户个人主页展示 Cookie 中的信息
@app.route('/user')
def user():
username = request.cookies.get('username')
return 'Welcome to your personal homepage, {}'.format(username)
Session
什么是 Session
Session 是一种在服务器端存储数据的机制,用于保存客户端与服务器交互的状态信息。Session 的原理是在客户端保存一个唯一的标识符(Session ID),然后将这个标识符发送到服务器,服务器根据标识符获取对应的 Session 数据。
设置 Session
在 Flask 中设置 Session 也很简单,只需要使用 session
属性即可:
from flask import session
@app.route('/login', methods=['POST'])
def login():
username = request.form['username']
# 验证用户登录信息是否正确
# ...
session['username'] = username
return 'login succeed'
在上例中,我们将用户的用户名保存到 Session 中,名为 username
。
获取 Session
在 Flask 中获取 Session 也很简单,只需要从 session
属性中获取:
from flask import session
@app.route('/user')
def user():
username = session.get('username')
return 'Welcome to your personal homepage, {}'.format(username)
在上例中,我们从 Session 中获取用户名,然后展示在用户个人主页上。
示例说明
下面给出一个具体示例。假设一个用户登录成功之后需要跳转到他的个人主页,并展示出他的用户名。在登录成功时,我们可以设置 Session 中的用户名。然后在用户访问个人主页时,从 Session 中获取用户名,展示在页面上。
# 登录成功时设置 Session 中的信息
from flask import session
@app.route('/login', methods=['POST'])
def login():
username = request.form['username']
# 验证用户登录信息是否正确
# ...
session['username'] = username
return 'login succeed'
# 用户个人主页展示 Session 中的信息
@app.route('/user')
def user():
username = session.get('username')
return 'Welcome to your personal homepage, {}'.format(username)
上述示例与 Cookie 的示例非常相似,不同的是,Session 的数据是保存在服务器端的,而 Cookie 是保存在客户端的。同时需要注意的是,为了确保 Session 的安全,我们需要在 Flask 配置中设置一个加密密钥:
app.secret_key = 'your_secret_key'
在上述代码中,我们设置了一个加密密钥,用于加密 Session 数据。需要注意的是,密钥应该是足够随机和复杂的。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Flask 入门系列 Cookie与session的介绍 - Python技术站