Django中的NoReverseMatch异常帮助

mpo*_*z08 10 python django syntax exception django-generic-views

我是python的新手,并在这里继续阅读Django框架教程的第4部分.我正在尝试为民意调查应用程序实现通用视图 - 我的代码似乎是正确的(据我所知),但当我尝试投票时,我得到一个NoReverseMatch异常,指出:

使用参数'(1L,)'和关键字参数'{}'找不到'polls/poll_results'的反转.

在我尝试通用视图之前,我的代码工作正常,但我现在似乎无法查明问题.

这是poll目录中urls.py的代码:

from django.conf.urls.defaults import *
from djtest.polls.models import Poll

info_dict = {
    'queryset': Poll.objects.all(),
}

urlpatterns = patterns('',
    (r'^$', 'django.views.generic.list_detail.object_list', info_dict),
    (r'^(?P<object_id>\d+)/$', 'django.views.generic.list_detail.object_detail', info_dict),
    url(r'^(?P<object_id>\d+)/results/$', 'django.views.generic.list_detail.object_detail', dict(info_dict, template_name='polls/results.html'), 'poll_results'),
    (r'^(?P<poll_id>\d+)/vote/$', 'djtest.polls.views.vote'),
)
Run Code Online (Sandbox Code Playgroud)

这是views.py:

from django.http import HttpResponse, Http404, HttpResponseRedirect
from django.shortcuts import render_to_response, get_object_or_404
from django.core.urlresolvers import reverse
from djtest.polls.models import Poll, Choice

def vote(request, poll_id):
    p = get_object_or_404(Poll, pk=poll_id)
    try:
        selected_choice = p.choice_set.get(pk=request.POST['choice'])
    except (KeyError, Choice.DoesNotExist):
        #redisplay form
        return render_to_response('polls/poll_detail.html', {
            'object': p,
            'error_message': "You didn't select a choice.",
        })
    else:
        selected_choice.votes += 1
        selected_choice.save()       
        return HttpResponseRedirect(reverse('poll_results', args=(p.id,)))
Run Code Online (Sandbox Code Playgroud)

我觉得这是一个语法错误,但我找不到它.在此先感谢任何帮助......

bst*_*rre 5

尝试使用:

return HttpResponseRedirect(reverse('poll_results', kwargs={'object_id': p.id}))
Run Code Online (Sandbox Code Playgroud)