Flask-插件
阿新 • • 發佈:2019-01-03
stc 請求 name 存儲 object print bsp 文件中 ase
一,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-插件