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
posted @   Bruce_JRZ  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示