【问题标题】:Flask & MongoDB (mLab) TypeError: ObjectId('5bf0b6ce397b3635dc0b10ab') is not JSON serializableFlask & MongoDB (mLab) TypeError: ObjectId('5bf0b6ce397b3635dc0b10ab') is not JSON serializable
【发布时间】:2018-11-18 01:04:24
【问题描述】:

我正在构建一个基于 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')

【问题讨论】:

  • 我检查了数据库,它成功存储了数据然后抛出这个错误。

标签: python mongodb flask mlab


【解决方案1】:

问题出在以下代码上:

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

我将字典传递给 User 类,而不是电子邮件地址。

【讨论】:

    猜你喜欢
    • 2013-07-12
    • 1970-01-01
    • 2013-11-25
    • 2019-05-06
    • 2019-10-09
    • 2021-03-02
    • 2017-05-10
    • 2021-09-19
    • 2014-10-14
    相关资源
    最近更新 更多