1. 程式人生 > >Flask-插件

Flask-插件

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-插件