使用Flask-Script时访问Flask实例

时间:2017-12-03 08:36:10

标签: python flask pymongo

我正在使用:

创建一个烧瓶实例

应用/的初始化的.py:

def create_app(config_name):
    app = Flask(__name__)
    mongo = PyMongo(app)
    ...
    return app

manage.py

app = create_app(Config.FLASK_CONFIG)
manager = Manager(app)

应用程序开始使用:

python manage.py runserver

在视图中,我想访问在app中创建的mongo实例。知道如何访问应用程序周围的PyMongo包装器吗?

1 个答案:

答案 0 :(得分:1)

__init__.py中,将app和mongo初始化为None

app = None
mongo = None

setup.py中创建一个单独的application模块,然后在那里移动create_app工厂函数。这种方法的原因是将Flask应用程序实例和mongo实例绑定到您的应用程序包。

此外,重构app工厂将数据库工厂与它分开,因为我们需要保留数据库实例。

import application

def create_app(config_name):
    app = Flask(__name__)
    ....
    return app

def create_mongo(app):
    return PyMongo(app)

app = create_app(Config.FLASK_CONFIG)

# bind to application package
application.app = app
application.mongo = create_mongo(app)

manage.py中,重写此内容以使用在setup.py模块中创建的应用实例。

from application.setup import app

manager = Manager(app)

Mongo实例可以直接从应用程序包导入,因为实例早先绑定到了安装程序包中。

from application import mongo

注意:

您可能想知道初始化PyMongo实例会将pymongo注册为您的烧瓶应用程序中的扩展名。

连接和数据库绑定到config_prefix密钥,其默认值为已注册扩展中的'MONGO'。它们都可以像这样检索:

cx, db = app.extensions['pymongo']['MONGO']

参考