return HttpResponseRedirect(reverse('polls:results', args=(question.id,))) 不工作,python,django"/>

首页 > 解决方案 > Django 文档第 4 部分return HttpResponseRedirect(reverse('polls:results', 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,)))

但是当我使用 return HttpResponseRedirect(reverse('polls:results', 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/

未找到“结果”的反向。“结果”不是有效的视图函数或模式名称。请求方法:POST 请求 URL: http: //127.0.0.1 :8000/polls/3/vote/ Django 版本:3.0.3 异常类型:NoReverseMatch 异常值:
未找到“结果”的反向。“结果”不是有效的视图函数或模式名称。异常位置: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\envs\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'] 服务器时间:2020 年 4 月 22 日,星期三 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,)))

标签: pythondjango

解决方案


推荐阅读