簡體   English   中英

帶MongoDB的Flask服務器(flask-pymongo)

[英]Flask server with MongoDB (flask-pymongo)

我正在嘗試設置一個燒瓶服務器,該服務器將數據/用戶添加到mongoDB數據庫。 我像這樣設置數據庫(使用mongo shell):

>use dbname
switched to dbname    
>db.users.save( {username:"user", password:"pass"} )
WriteResult({ "nInserted" : 1 })

並使用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_prefix的東西? 文檔說config_prefix默認設置為“ MONGO”,而在我的配置中前綴為mongo。 我一定缺少一些SOS

科斯塔斯是正確的。

我變了:

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

簡單地

mongo = PyMongo(app)

你有錯字

@app.route('/login', methods=['GET', 'POST'])

PyMongo使用flask中的current_app變量來引用處理請求的應用程序實例。 在這種情況下, app處理請求,但是appp具有配置。 所以這條線應該變成

@appp.route('/login', methods=['GET', 'POST'])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM