Cookie
获取请求cookie
通过请求对象中的cookies属性可以获取cookie。
实例:
from flask import Flask, request
@app.route("/user-info", methods=["get", "post"])
def userinfo():
username = request.cookies.get("username")
return f"you name is :{username}"
设置响应cookie
通过Response对象的set_cookie()方法设置cookie,同时一般还会设置cookie的有效期、httponly、允许域等等属性。
def set_cookie(self,
key: str,
value: str = "",
max_age: timedelta | int | None = None,
expires: str | datetime | int | float | None = None,
path: str | None = "/",
domain: str | None = None,
secure: bool = False,
httponly: bool = False,
samesite: str | None = None) -> None
实例:
from flask import Flask, request, make_response
@app.route("/user-info", methods=["get", "post"])
def userinfo():
username = request.cookies.get("username")
# 构建请求对象并接收
response = make_response(f"you name is :{username}")
response.set_cookie("username", "newname", max_Age=3600)
return f"you name is :{username}"
删除cookie
本质上就是将cookie的有效期设置为0
response.set_cookie("<cookie名>", max_age=0)
Session
flask中使用Session需要配置app中的SECRET_KEY,因为Flask中的session默认并不是存储在服务器端的,而是通过加密算法加密后以cookie形式返回给客户端存储。
客户端携带过来后会进行解密,所以需要设置SECRET_KEY用于加密、解密。
设置secret_key
app.secret_key = "a*)(ihq#Eadbn8/*+XA2qAodhcoi$%^!5ss6z31ssdas"
获取session
通过导入from flask import session
来使用
@app.route('/get_session')
def get_session():
username = session.get('username')
return f"you name is {username}"
设置session
from flask import session
@app.route('/set_session')
def set_session():
# 直接用字典的方式设置即可
session['username'] = 'flask'
return 'set session ok'
session的有效期设置
默认情况下session随着会话消失而消失,如果需要长时间保存,则需要设置:
# 1、app配置permanent_session_lifetime
app.permanent_session_lifetime = datatime.timedelta(days=7)
# 2、在路由中开启session持久保持属性
@app.route('/set_session')
def set_session():
# 直接用字典的方式设置session即可,这点与django相同
session['username'] = 'flask'
# 开启持久保存session,保存的时长为permanent_session_lifetime 所设置的值
session.permanent = True
return 'set session ok'
删除session
删除单个
from flask import session
@app.route('/clear_signle_session')
def set_session():
# 由于session就是一个字典,,所以直接可以调用字典的pop方法弹出
session.pop("username")
return "clean username ok"
删除所有
from flask import session
@app.route('/clear_all_session')
def set_session():
# 由于session就是一个字典,,所以直接可以调用字典的clear方法删除所有。
session.clear()
return "clean all session ok"
标签:username,set,flask,app,session,cookie
From: https://www.cnblogs.com/juelian/p/17742119.html