Flask-会话技术
from flask import request, session
Flask中的session、request是全局对象
Cookie
设置cookie:
response.set_cookies(key,value[,max_age=None,exprise=None])
max_age:整数,指定cookie过期时间
expries:整数,指定过期时间,可以指定一个具体日期时间
max_age和expries两个选一个指定
获取cookie:
request.cookies.get(key)
删除cookie:
response.delete_cookie(key)
Session
设置session session['key'] = 'value'
获取session session.get(key, defualt=None) 根据键获取会话的值
删除session session.pop(key) 删除某一值 session.clear() 清除所有
设置SECRET_KEY
# __init__.py : 初始化文件,创建Flask应用
import datetime
from flask import Flask
from .views import blue
def create_app():
app = Flask(__name__)
# 注册蓝图
app.register_blueprint(blue)
# session 配置
print(app.config) # flask配置信息
'''
<Config {
'ENV': 'production',
'DEBUG': False, 'TESTING': False, 'PROPAGATE_EXCEPTIONS': None,
'SECRET_KEY': None,
'PERMANENT_SESSION_LIFETIME': datetime.timedelta(days=31),
'USE_X_SENDFILE': False, 'SERVER_NAME': None, 'APPLICATION_ROOT': '/',
'SESSION_COOKIE_NAME': 'session',
'SESSION_COOKIE_DOMAIN': None,
'SESSION_COOKIE_PATH': None,
'SESSION_COOKIE_HTTPONLY': True,
'SESSION_COOKIE_SECURE': False,
'SESSION_COOKIE_SAMESITE': None,
'SESSION_REFRESH_EACH_REQUEST': True,
'MAX_CONTENT_LENGTH': None,
'SEND_FILE_MAX_AGE_DEFAULT': None,
'TRAP_BAD_REQUEST_ERRORS': None, 'TRAP_HTTP_EXCEPTIONS': False,
'EXPLAIN_TEMPLATE_LOADING': False, 'PREFERRED_URL_SCHEME': 'http',
'JSON_AS_ASCII': None, 'JSON_SORT_KEYS': None, 'JSONIFY_PRETTYPRINT_REGULAR': None,
'JSONIFY_MIMETYPE': None, 'TEMPLATES_AUTO_RELOAD': None, 'MAX_COOKIE_SIZE': 4093}>
'''
# 当 app没有设置secret_key时,views中设置了session,就会报如下错误
# RuntimeError: The session is unavailable because no secret key was set. Set the secret_key on the application to something unique and secret.
# 因此需要设置一下secret_key
app.config['SECRET_KEY'] = 'abc123'
# 设置了secret_key后,session有key-value时,cookie中就有一个key=session(对应以上配置中的SESSION_COOKIE_NAME)的键值对
# 对应的value是使用了secret_key加密的字符串(使用AES DES等对称加密方式,加密、解密都使用同一字符串)
# 设置session过期时间
app.config['PERMANENT_SESSION_LIFETIME'] = datetime.timedelta(days=8)
return app

浙公网安备 33010602011771号