类型LocalProxy的对象不是JSON可序列化的

时间:2019-11-25 10:31:04

标签: json ajax flask

我正在Flask中创建一个应用程序,并且正在使用一个表单将响应存储在数据库中。而不是重新加载页面。我正在尝试使用AJAX用新项目更新页面。

但是,我遇到了该应用程序的问题,使我无法使用jsonify将数据转换为json的错误。

我将其范围缩小到current_user字段,我用来获取当前用户的名称以存储在数据库中,当前为Local Proxy类型,Flask表示不是可序列化。有人知道解决这个问题的方法吗?

型号:

class User(UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), index=True, unique=True)
    email = db.Column(db.String(120), index=True, unique=True)
    password_hash = db.Column(db.String(128))
    todos = db.relationship('Todo', backref='owner', lazy='dynamic')
class Todo(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    body = db.Column(db.String(140))
    timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))

路线:

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

def todo():
    if current_user.is_authenticated:
        form = TodoForm()
        todos = current_user.todos.order_by(Todo.timestamp.desc()).all()
        if form.validate_on_submit():
            new_todo = Todo(body=form.todo.data, owner=current_user)
            db.session.add(new_todo)
            db.session.commit()
            flash('Todo added')
            response = jsonify(current_user)
            response.status_code = 200
            return response
        return render_template('todo.html', form=form, todos=todos)
    flash('You first need to login or register')
    return redirect(url_for('index'))

0 个答案:

没有答案