TypeError:editProfile()得到一个意外的关键字参数'obj'

时间:2014-10-23 13:40:51

标签: python forms flask edit

我想编辑我的用户个人资料,这是我的模型,表单和视图。转移' 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)

1 个答案:

答案 0 :(得分:3)

您正在调用editProfile函数,而不是类,即您正在进行递归。 您的editProfile函数不会接受任何名为obj的参数,因此您会收到该错误。 这是因为它们的名称完全相同。

更改为

def editProfile(id):
  post = User.query.get(id)
  form = EditProfileForm(obj=post)

而且你会发现它会起作用。