我正在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'))