validate_on_submit验证用户输入的数据看不到正确的表单值

时间:2018-12-26 21:27:50

标签: python flask flask-wtforms

我有一个Flask应用程序,它是一个基本的测验应用程序。用户回答了一个问题,并且在视图中,我验证了答案是否正确。我遇到的问题是正确的答案没有与用户的答案进行正确比较。似乎正在查看下一个表格的正确答案,而不是比较当前表格的正确答案。

我尝试使用中间视图来检查正确答案以及使用会话变量。似乎总是在根据下一个表格的值检查正确答案。

预先感谢您的关注。

我的表单代码:

class QuizForm(FlaskForm):
    question = ''
    answer = RadioField('Answer',coerce=int,
            choices=[],validators=[DataRequired()])
    submit = SubmitField('Submit')
    correct = HiddenField('Correct')

    def validate_answer(self,answer):
        if answer is None:
            raise ValidationError('Please select an answer')

我的路线代码:

@app.route('/quiz', methods=['GET','POST'])
@login_required
def quiz():
    form = QuizForm()

    #qq = Database entry for questions/choices/correct answer..

    form.question = qq.question
    form.answer.choices = [(1,qq.choice1), (2, qq.choice2),
                           (3,qq.choice3), (4, qq.choice4)]

    form.correct = qq.answer

    if form.validate_on_submit():
        if form.answer.data == form.correct:
            flash('Correct')
        else:
            flash('Incorrect!')

        return redirect(url_for('quiz'))

     return render_template('quiz.html',form=form)

我的html:

<form action="" method="post" novalidate>
   {{ form.hidden_tag() }}
   <p>
       {{ form.question }}
       {{ form.answer }}
   {% for error in form.answer.errors %}
       <span style="color: red;">[{{ error }}]</span>
   {% endfor %}
   </p>
   <p>{{ form.submit() }}</p>
</form>

1 个答案:

答案 0 :(得分:2)

您必须进行两条单独的路线: @ app.route('/ quiz',Methods = ['GET']) @ app.route('/ quiz',Methods = ['POST'])