我有一个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>
答案 0 :(得分:2)
您必须进行两条单独的路线: @ app.route('/ quiz',Methods = ['GET']) @ app.route('/ quiz',Methods = ['POST'])