Flask-插件
Posted lianyeah
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask-插件相关的知识,希望对你有一定的参考价值。
一,Flask-session
Flask-session跟框架自带的session的区别
框架自带的session是通过请求上下文放入Local中的,如果我们想把session放入别的地方怎么办,比如redis或者数据库等,Flask-session就提供了这些功能
下载安装
pip install flask-session
导入并实例化
from flask-session import Session # 导入 def create_app(): app = Flask(__name__) app.config.from_object("settings.BaseConfig") app.register_blueprint(xBule) # 实例化 Session(app) return app
配置文件
class BaseConfig(object): # ... SESSION_TYPE = "redis" SESSION_REDIS = Redis(host="127.0.0.1",port="6379")
实现原理
# 原生session的实现原理 # 请求进来先把request以及session封装到RequestContext对象中 # 调用push方法通过LocalStark放入到Local中 # 这时候放入到Local中的ctx.session还是None session_interface = self.app.session_interface self.session = session_interface.open_session(self.app,self.request) # 然后调用了session_interface中的open_session和save_session方法 # Flask-session的实现原理 # Session(app) def __init__(self,app=None): self.app = app if app is not None: self.init_app(app) # 执行了init_app方法 def init_app(self,app): # 把Session类的_get_interface(app)赋值给了app.session_interface # 相当于self.session = Session()._get_interface(app).open_session(self.app,self.request) app.session_interface = self._get_interface(app) # _get_interface方法找配置文件中的配置的类里的方法,从而实现了session存储地方的不同
以上是关于Flask-插件的主要内容,如果未能解决你的问题,请参考以下文章