Это Работает Работает
def vote(request, question_id):
question = get_object_or_404(Question, pk=question_id)
try:
selected_choice = question.choice_set.get(pk=request.POST['choice'])
except (KeyError, Choice.DoesNotExist):
# Redisplay the question voting form.
return render(request, 'polls/detail.html', {
'question': question,
'error_message': "You didn't select a choice.",
})
else:
selected_choice.votes += 1
selected_choice.save()
return render(request, 'polls/results.html', {'question': question})
# return HttpResponseRedirect(reverse('polls:results', args=(question.id,)))
Но когда я использую return HttpResponseRedirect (reverse ('опросы: результаты', args = (question.id,))) .. Не Работает Не работает
def vote(request, question_id):
question = get_object_or_404(Question, pk=question_id)
try:
selected_choice = question.choice_set.get(pk=request.POST['choice'])
except (KeyError, Choice.DoesNotExist):
# Redisplay the question voting form.
return render(request, 'polls/detail.html', {
'question': question,
'error_message': "You didn't select a choice.",
})
else:
selected_choice.votes += 1
selected_choice.save()
#return render(request, 'polls/results.html', {'question': question})
return HttpResponseRedirect(reverse('polls:results', args=(question.id,)))
Показывает
NoReverseMatch at /polls/3/vote/
Обратного для «результатов» не найдено. 'results' не является допустимой функцией просмотра или именем шаблона. Метод запроса: POST URL-адрес запроса: http://127.0.0.1: 8000 / polls / 3 / voice / Django Версия: 3.0.3 Тип исключения: NoReverseMatch Значение исключения:
Не найден реверс для «результатов» , 'results' не является допустимой функцией просмотра или именем шаблона. Расположение исключения: C: \ Users \ shaff \ Anaconda3 \ envs \ First_Django_App \ lib \ site-packages \ django \ urls \ resolvers.py в _reverse_with_prefix, строка 677 Python Исполняемый файл: C: \ Users \ shaff \ Anaconda3 \ envs \ First_Django_App \ python .exe Python Версия: 3.7.7 Python Путь:
['G: \ Django_Project \ First_Django_App', 'C: \ Users \ shaff \ Anaconda3 \ enacs \ First_Django_App \ python37.zip ',' C: \ Users \ shaff \ Anaconda3 \ envs \ First_Django_App \ DLLs ',' C: \ Users \ shaff \ Anaconda3 \ envs \ First_Django_App \ lib ',' C : \ Users \ shaff \ Anaconda3 \ envs \ First_Django_App ',' C: \ Users \ shaff \ Anaconda3 \ envs \ First_Django_App \ lib \ site-packages '] Время сервера: ср., 22 апреля 2020 г. 07:54:46 + 0000``
Полный код:
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import get_object_or_404, render
from django.urls import reverse
from .models import Choice, Question
def index(request):
latest_question_list = Question.objects.order_by('-pub_date')[:5]
context = {'latest_question_list': latest_question_list}
return render(request,'polls/index.html', context)
def detail(request, question_id):
question = get_object_or_404(Question, pk=question_id)
return render(request, 'polls/detail.html', {'question': question})
def results(request, question_id):
question = get_object_or_404(Question, pk=question_id)
return render(request, 'polls/results.html', {'question': question})
def vote(request, question_id):
question = get_object_or_404(Question, pk=question_id)
try:
selected_choice = question.choice_set.get(pk=request.POST['choice'])
except (KeyError, Choice.DoesNotExist):
# Redisplay the question voting form.
return render(request, 'polls/detail.html', {
'question': question,
'error_message': "You didn't select a choice.",
})
else:
selected_choice.votes += 1
selected_choice.save()
#return render(request, 'polls/results.html', {'question': question})
return HttpResponseRedirect(reverse('polls:results', args=(question.id,)))