TypeError:validate_on_submit()缺少1个必需的位置参数:' self'

时间:2017-01-17 12:08:48

标签: python flask

我正在使用Flask web development教程而且我遇到了几个错误;我的简单Web应用程序正在使用FlaskForm并且我正在尝试验证信息,但是遇到了一些问题,特别是在函数validate_on_submit()中。这是我的python代码

 class NameForm(FlaskForm):
   name = StringField("What is your name?", validators=[required])
   submit = SubmitField('Submit')



 @app.route('/index', methods=['GET', 'POST'])
 def index():
     name = None
     formi = NameForm()


     if FlaskForm.validate_on_submit():
        name = FlaskForm.name.data
        FlaskForm.name.data = ''
        return render_template('index.html', form=formi, name=name)

我的错误发生在if语句

2 个答案:

答案 0 :(得分:1)

您需要从表单实例调用validate_on_submit而不是类。使用:

 if formi.validate_on_submit():

答案 1 :(得分:1)

此错误表示应使用类validate_on_submit的实例调用FlaskForm,而不是使用类本身调用,如docs中的此示例所示:

@app.route('/submit', methods=('GET', 'POST'))
def submit():
    form = MyForm()
    if form.validate_on_submit():
        return redirect('/success')
    return render_template('submit.html', form=form)

应用于您的代码,行if FlaskForm.validate_on_submit():应更改为if formi.validate_on_submit():