[英]Flask-pymongo RuntimeError: Working outside of application context
[英]Flask-PyMongo with application factory and blueprints
我正在嘗試使用藍圖和應用程序工廠實現 Flask-PyMongo 並不斷收到 AttributeError: 'Flask' object has no attribute 'db' 我的目錄結構看起來像
myapp/
myapp.py
config.py
/app
__init__.py
/v1
__init__.py
endpoints.py
在我啟動 Flask 應用程序的 python 腳本中,我有:
import os
from app import create_app
app = create_app('dev')
在我的頂級init .py 中,我有:
mongo = PyMongo()
def create_app(config_name):
app = Flask(__name__)
mongo.init_app(app)
app.config.from_object(config[config_name])
from app.v1 import psapi as psapi_bp
app.register_blueprint(psapi_bp, url_prefix='/api')
if not os.path.exists('logs'):
os.mkdir('logs')
在我的 endpoints.py 中,我有一個看起來像的路由
@myapp.route('/addentry', methods=['POST'])
def addentry():
username = request.json['username']
userid = current_app.db.user_entry.insert({'username':username})
return jsonify({'userid':userid})
我覺得我錯過了一些小東西,但我沒有看到它。
您需要在mongo
對象上調用db
,而不是在app
對象上
對於那些可能再次面臨這個問題的人:
從燒瓶導入燒瓶,current_app
from flask_pymongo import PyMongo
mongo = PyMongo()
def create_app(config_name):
app = Flask(__name__, instance_relative_config=False)
app.config.from_object(app_config[config_name])
# INIT EXTENSIONS ----------------------
mongo.init_app(app)
return app
然后在任何文件中,您都可以從上面的文件中導入 mongo。 例如:
from ../factory import mongo
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.