Python 带MongoDB的Flask服务器(Flask pymongo)

Python 带MongoDB的Flask服务器(Flask pymongo),python,mongodb,Python,Mongodb,我正在尝试设置一个flask服务器,将数据/用户添加到mongoDB数据库。 我将DB(使用mongo shell)设置为: 并确认数据是用db.users.find()写入的 我添加了一个mongo用户,如下所示: >use admin switched to db admin >var w = { user:"user", roles:["readWriteAnyDatabase"], pwd:"password"} >db.createUser(w) 我的config.

我正在尝试设置一个flask服务器,将数据/用户添加到mongoDB数据库。 我将DB(使用mongo shell)设置为:

并确认数据是用db.users.find()写入的

我添加了一个mongo用户,如下所示:

>use admin
switched to db admin
>var w = { user:"user", roles:["readWriteAnyDatabase"], pwd:"password"}
>db.createUser(w)
我的config.py看起来像:

...
MONGO_URI = 'mongodb://user:password@localhost:27017/dbname'
我的python如下所示:

from flask import render_template, flash, redirect, Flask
from app import app
from flask_pymongo import PyMongo
from .forms import LoginForm

appp = Flask(__name__)
mongo = PyMongo(appp)

@app.route('/login', methods=['GET', 'POST'])
def login:
    form = LoginForm()
    if form.validate_on_submit():
        user = {"username": form.username.data,
                "password": form.password.data}
        post_id = mongo.db.users.insert_one(user)
        flash('Login req: u=%s, p=%s' % (form.username.data, str(form.remember_me.data)))
        return redirect('/index')
我以为一切都很好,但当我尝试时,我得到了这个:

它似乎说了一些关于config_前缀的事情?文档中说,默认情况下,config_前缀设置为“MONGO”,而在我的配置中,前缀为MONGO。我一定是漏掉了什么东西,你输入了一个错误

@app.route('/login', methods=['GET', 'POST'])
PyMongo使用flask中的current_app变量,该变量表示处理请求的应用程序实例。在这种情况下,app处理请求,但appp具有配置。所以这条线应该是

@appp.route('/login', methods=['GET', 'POST'])
科斯塔斯是对的

我改变了:

appp = Flask(__name__)
mongo = PyMongo(appp)
简单地

mongo = PyMongo(app)
mongo = PyMongo(app)