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-插件的主要内容,如果未能解决你的问题,请参考以下文章

python Flask - 数据库片段

VSCode插件开发全攻略代码片段设置自定义欢迎页

Wordpress - 将代码片段包含到布局的选定部分的插件

Word 文档的优秀代码片段工具或插件?

vim代码片段插件ultisnips的使用

从零开始配置vim(27)——代码片段