При нажатии на кнопку Django представление отображается дважды
Я действительно новичок в Django и все еще учусь. Я постараюсь объяснить свою проблему как можно лучше. При нажатии на кнопку в моем шаблоне я хочу работать с некоторыми значениями & переменными:
<form method='get' action=''>
<input type="submit" value="{{ answer1 }}" name="btn1" />
<input type="submit" value="{{ answer2 }}" name="btn2" />
<input type="submit" value="{{ answer3 }}" name="btn3" />
<input type="submit" value="{{ answer4 }}" name="btn4" />
</form>
my views.py:
class MyView(TemplateView):
def get(self, request, *args, **kwargs):
obj = MyObject()
self.create_dict(q_obj)
if request.GET.get('btn1'):
# some code...
return render(request, self.template_name, { ... })
Проблема в том, что теперь каждый раз, когда я нажимаю на кнопку, используемая словарная переменная заменяется следующей, потому что происходит новый рендеринг.
[12/Jan/2022 21:48:46] "GET /quizapp/home/subject/ HTTP/1.1" 200 5267
{'answer': <Answer: 3>, 'correct': False}
{'answer': <Answer: 5>, 'correct': False}
{'answer': <Answer: 2>, 'correct': True}
{'answer': <Answer: 7>, 'correct': False}
[12/Jan/2022 21:48:47] "GET /quizapp/home/subject/round/ HTTP/1.1" 200 7864
{'answer': <Answer: 4>, 'correct': True}
{'answer': <Answer: 2>, 'correct': False}
{'answer': <Answer: 6>, 'correct': False}
{'answer': <Answer: 1>, 'correct': False}
Я хочу работать с первым набором, но все, что я меняю, относится ко второму словарю. Я пытался исправить с помощью некоторых команд перенаправления, но ничего не работает... Я неправильно понимаю некоторые техники Django(GET/POST)? Спасибо, если кто-то сможет мне помочь ;)
Кнопка "Отправить" в любом месте в Интернете означает, что вы закончили работу с этой формой и хотите перейти к следующему шагу. Поскольку все варианты викторины представляют собой кнопки отправки, нет ничего удивительного в том, что при нажатии на них вы получите новый рендер.
Вы отправляете форму всякий раз, когда нажимаете на любую из этих кнопок. Чтобы избежать этого, вам нужно реализовать радиокнопку (Choices). И только одну кнопку отправки в конце формы. Пример приведен здесь
Каждый раз, когда вы отправляете форму, она будет отображаться снова. Таким образом, вы должны нажимать submit только тогда, когда хотите получить новую форму и перейти к следующему шагу.