我正在尝试使用蓝图和应用程序工厂实现Flask-PyMongo并继续获取AttributeError:'Flask'对象没有属性'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})
我觉得我有一些小东西,但是我没有看到它。
答案 0 :(得分:1)
您需要在db
对象上致电mongo
,而不是app
对象
答案 1 :(得分:1)
对于可能再次遇到此问题的人:
从烧瓶进口烧瓶,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