Метод Request.Post не работает должным образом в django - PullRequest
0 голосов
/ 14 апреля 2020

Я строю приложение викторины. Я создал 3 модели Викторина, Вопрос, Ответ. Вопрос связан с Викториной по внешнему ключу, а Ответ связан с Вопросом. Я создал радиокнопку, но она не работает. это показывает ошибка: MultiValueDictKeyError в / quiz / 2/11 / 'choice'

views.py

def question_detail(request,question_id,quiz_id):
q = Quiz.objects.get(pk=quiz_id)
que = Question.objects.get(pk=question_id)
ans = que.answer_set.all()
selected_choice = que.answer_set.get(pk=request.POST['choice'])
if selected_choice is True:
    come = que.rank
    came = come + 1
    later_question = q.question_set.get(rank=came)
    return render(request,'app/question_detail.html',{'que':que , 'later_question':later_question, 'ans':ans})
else:
    come = que.rank
    later_question = q.question_set.get(rank=come)
    return render(request, 'app/question_detail.html', {'que': que, 'later_question': later_question, 'ans': ans})

question_detail. html

<form action="{% 'app:detail' quiz_id=quiz.id question_id=que.id %}" method="post">
{% csrf_token %}
{% for choice in que.answer_set.all %}
    <input type="radio" name="choice" id="choice{{forloop.counter}}" value="{{choice.id}}">
    <label for="choice{{forloop.counter}}">{{choice.answer}}</label>
{% endfor %}

1 Ответ

0 голосов
/ 14 апреля 2020

Ошибка гласит, что «выбор» отсутствует в словаре. Чтобы избежать этой проблемы, вы должны использовать equest.POST.get('choice'), и если ключ не существует в dict, он вернет None, так что в конечном итоге вы все равно получите ошибку. Ваша проблема в том, что в запросе нет «выбора». ПОСТ попытайтесь разрешить его или добавьте еще код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...