Django Документация часть 4 return HttpResponseRedirect (reverse ('опросы: результаты', args = (question.id,))) не работает - PullRequest
0 голосов
/ 22 апреля 2020

Это Работает Работает

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,)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...