簡體   English   中英

Flask和MongoDB(mLab)TypeError:ObjectId('5bf0b6ce397b3635dc0b10ab')不可序列化JSON

[英]Flask & MongoDB (mLab) TypeError: ObjectId('5bf0b6ce397b3635dc0b10ab') is not JSON serializable

我正在構建一個基於Flask的Web應用程序,並且在我的數據庫幫助器類中,我有一個create_user()函數,如果該行顯示如下,則該函數可以正常工作:

users.insert({'user': email, 'password': hashpass})

但是,當我將其更改為:

users.insert({'email': email, 'password': hashpass})

我收到以下錯誤:

TypeError: ObjectId('5bf0b6ce397b3635dc0b10ab') is not JSON serializable

數據庫助手類

import bcrypt

class DBHelper:

def __init__(self, mongo):
    self.mongo = mongo

def create_user(self, email, password):
    users = self.mongo.db.users
    hashpass = bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt())
    users.insert({'email': email, 'password': hashpass})

燒瓶代碼

@app.route("/account")
@login_required
def account():
    return render_template("home.html", options=options, questions=questions)
    return "You are logged in"


@app.route('/register', methods=['POST', 'GET'])
def register():
    if request.method == 'POST':
        stored_user = DB.get_user(request.form['email'])

        if stored_user is None:
            DB.create_user(request.form['email'], request.form['pass'])
            #session['username'] = request.form['username']
            user = User(DB.get_user(request.form['email']))
            login_user(user)
            return redirect(url_for('account'))

        return 'That username already exists!'

return render_template('register.html')

問題出在以下代碼上:

user = User(DB.get_user(request.form['email']))
login_user(user)

我正在將字典傳遞給User類,而不是電子郵件地址。

暫無
暫無

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

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