Викторина, которую я пытаюсь построить в django - как заставить ее работать?
Я создаю викторину по отработке иврит-английских слов. Каждый раз компьютер вытаскивает из БД 4 слова rednomiles, а пользователь выбирает из них подходящее слово. Проблема в том, что всегда начинается с того, что request.post.get = None. И отступ выполняется перед None, что означает, что результат неправильный, даже если ответ правильный. Как я могу это исправить?
Фактически сравнение производится еще до того, как пользователь сделал выбор. А после выбора полученный результат обычно оказывается неверным.
Например - в первом раунде (а правильная работа и в следующем раунде будет y) компьютер выбрал x - и теперь я нажимаю на x результат = неправильный x != y..
следующий раунд компьютер выбирает y , и теперь я нажимаю на y (а правильная работа и следующий раунд будет z) результат = неправильно y != z..
def practice(request):
words_list = Words.objects.filter(approved= True) # Take all the words that approved by the admin
four_options = [random.choice(words_list) for i in range(4)]
x = four_options[0]
z = x.Hebrew_word
random.shuffle(four_options)
word = z[:4]
choice_user = request.POST.get("quiz")
choice_1 = str(choice_user)
choice = choice_1[:4]
if request.method == "POST":
if choice == word:
message = f'Correct {choice} == {word}'
return render(request, "practice.html",
{"four_options": four_options, "x": x, "z": z, "choice": choice, 'word': word,"message":message})
if choice != word:
message = f'Incorrect {choice} != {word}'
return render(request, "practice.html",
{"four_options": four_options, "x": x, "z": z, "choice": choice, 'word': word,"message":message})
return render(request, "practice.html", {"four_options": four_options, "z": z, "x": x,"choice":choice ,'word':word})
<div id="word"> {{x.English_word}}</div>
{%for i in four_options%}
<form method="POST">
{%csrf_token%}
<br/>
<input name = "quiz" type="submit" value={{i.Hebrew_word}} class="btn btn-primary"/>
</form>
{%endfor%}
{{message}}