python - 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 类,而不是电子邮件地址。
推荐阅读
- r - 删除 sparklyr 中的重复行
- node.js - 如何手动修复 npm install 期间显示的漏洞?
- javascript - 在函数中使用动态导入时,如何在全局变量中指定类型信息?
- reactjs - 未处理的拒绝(TypeError):无法读取未定义的属性“错误”
- ios - 如何在功能组件和钩子中使用 AppState?有必要还是我错误地使用了 useEffect?
- hibernate - jpa中单亲多子女的最佳设计
- sql - Pset7 - 电影停留在 12 和 13 SQL 上?
- c++ - 一个线程可以“安全地”从另一个没有保护的线程写入的变量中读取吗?
- swift - 具有新时间间隔的重复计时器
- c# - 如何向 WPF 应用程序图标添加通知徽章,以便它出现在应用程序图标出现的所有位置,而不仅仅是窗口标题栏?