代码之家  ›  专栏  ›  技术社区  ›  Kay

Flask PyMongo-init\u app()缺少1个必需的位置参数:“app”

  •  -1
  • Kay  · 技术社区  · 6 年前

    我正在尝试使用flask pymongo初始化我的数据库。

    但我得到以下错误,

    文件“run.py”,第22行,in
    app=创建应用程序(“配置”)


    TypeError:init\u app()缺少1个必需的位置参数:“app”

    运行.py

    from flask import Flask
    from app import api_bp
    from db import mongo
    
    def create_app(config_filename):
    
        app = Flask(__name__)
        app.config.from_object(config_filename)
        app.register_blueprint(api_bp, url_prefix='/api')
    
        mongo.init_app(app)
    
        return app
    
    # def logger():
    
    
    # def database():
    
    
    if __name__ == "__main__":
        app = create_app("config")
        app.run(host='0.0.0.0', port=8080, debug=True)
    

    双倍

    from flask_pymongo import PyMongo
    
    mongo = PyMongo
    

    DEBUG = True
    SECRET_KEY = "secret"
    MONGO_URI = "mongodb://localhost:27017/api"
    

    应用程序/\uuu初始化\uuuuuuuuuuuuuuy.py

    import os
    import json
    import datetime
    from flask import Blueprint
    from flask import jsonify
    from flask_restful import Api
    from .users.resource import UsersResource
    
    api_bp = Blueprint('api', __name__)
    api = Api(api_bp)
    
    
    api.add_resource(UsersResource, '/users')
    

    应用程序/用户/资源.py

    from flask_restful import Resource
    from flask import jsonify
    from .repository import UsersRepository
    
    class UsersResource(Resource):
    
        def __init__(self):
    
            self.repository = UsersRepository()
    
        def get(self):
    
            data = {"Users": "Resource"}
            res = data, 200
            return res
    

    我正在尝试使用flaskrestful和flaskpymongo设置一个restfulapi。欢迎提出任何其他建议来改进我的方法。

    2 回复  |  直到 6 年前
        1
  •  2
  •   Daniel Roseman    6 年前

    你没有在db.py中实例化PyMongo类。

    mongo = PyMongo()
    
        2
  •  1
  •   Feng    6 年前

    你应该像我一样用烧瓶 this :

    from flask import Flask
    from flask_pymongo import PyMongo
    
    app = Flask(__name__)
    app.config["MONGO_URI"] = "mongodb://localhost:27017/myDatabase"
    mongo = PyMongo(app)
    

    因此,在run.py中,应该使用以下代码:

    from flask import Flask
    from app import api_bp
    from db import mongo
    
    def create_app(config_filename):
    
        app = Flask(__name__)
        app.config.from_object(config_filename)
        app.register_blueprint(api_bp, url_prefix='/api')
    
        # mongo.init_app(app) # remove this line
    
        return app
    
    # def logger():
    
    
    # def database():
    
    
    if __name__ == "__main__":
        app = create_app("config")
        py_mongo = mongo(app)
        app.run(host='0.0.0.0', port=8080, debug=True)