У меня есть приложение 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>