我想编辑我的用户个人资料,这是我的模型,表单和视图。转移' obj'要形成(在视图中)此消息出现:
" TypeError:editProfile()得到了一个意外的关键字参数' obj'"
请提示。
型号:
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64), index=True, unique=True)
age = db.Column(db.Integer, index=True)
email = db.Column(db.String(120), index=True, unique=True)
def __repr__(self):
return '<User %r>' % (self.name)
形式:
class editProfile(Form):
name = StringField('name', validators=[DataRequired()])
age = IntegerField('age', validators=[DataRequired()])
email = StringField('email', validators=[Email()])
查看:
@app.route('/edit/<int:id>')
def editProfile(id):
post = User.query.get(id)
form = editProfile(obj=post)
if form.validate_on_submit():
form.populate_obj(post)
db.session.commit()
flash("Profile was updated")
return redirect(url_for('index'))
return render_template('editProfile.html', form=form)
答案 0 :(得分:3)
您正在调用editProfile
函数,而不是类,即您正在进行递归。
您的editProfile
函数不会接受任何名为obj
的参数,因此您会收到该错误。
这是因为它们的名称完全相同。
更改为
def editProfile(id):
post = User.query.get(id)
form = EditProfileForm(obj=post)
而且你会发现它会起作用。