Reverse for 'results' with arguments '(3L,)' and keyword arguments '{}' not found.

116 views
Skip to first unread message

Terry Lang

unread,
Dec 2, 2014, 9:39:46 AM12/2/14
to django...@googlegroups.com
I am in the middle of tutorial 4, but am getting an error.
What did I do wrong?

NoReverseMatch at /polls/3/vote/

Reverse for 'results' with arguments '(3L,)' and keyword arguments '{}' not found. 1 pattern(s) tried: [u'polls/(lP<question_id>\\d+)/results/$']
Request Method: POST
Request URL: http://www.alzacloud.net:8000/polls/3/vote/
Django Version: 1.7.1
Exception Type: NoReverseMatch
Exception Value:
Reverse for 'results' with arguments '(3L,)' and keyword arguments '{}' not found. 1 pattern(s) tried: [u'polls/(lP<question_id>\\d+)/results/$']
Exception Location: /home/terryl/cloud/local/lib/python2.7/site-packages/django/core/urlresolvers.py in _reverse_with_prefix, line 468
Python Executable: /home/terryl/cloud/bin/python
Python Version: 2.7.6
Python Path:
['/home/terryl/pjtcloud',
 '/home/terryl/cloud/lib/python2.7',
 '/home/terryl/cloud/lib/python2.7/plat-x86_64-linux-gnu',
 '/home/terryl/cloud/lib/python2.7/lib-tk',
 '/home/terryl/cloud/lib/python2.7/lib-old',
 '/home/terryl/cloud/lib/python2.7/lib-dynload',
 '/usr/lib/python2.7',
 '/usr/lib/python2.7/plat-x86_64-linux-gnu',
 '/usr/lib/python2.7/lib-tk',
 '/home/terryl/cloud/local/lib/python2.7/site-packages',
 '/home/terryl/cloud/lib/python2.7/site-packages']

polls/urls.py

from django.conf.urls import patterns, include, url
from django.contrib import admin
from polls import views

#urlpatterns = patterns('',
#    url(r'^polls/', include('polls.urls')),
#    url(r'^admin/', include(admin.site.urls)),
#)

    # ex: /polls/
    # ex: /polls/5/
    # ex: /polls/5/results/
    # ex: /polls/5/vote/
urlpatterns = patterns('',
    url(r'^$', views.index, name='index'),
    url(r'^(?P<question_id>\d+)/$', views.detail, name='detail'),
    url(r'^(lP<question_id>\d+)/results/$', views.results, name='results'),
    url(r'^(?P<question_id>\d+)/vote/$', views.vote, name='vote'),
)


polls/views.py

from django.shortcuts import get_object_or_404, render
from django.http import HttpResponseRedirect, HttpResponse
from django.core.urlresolvers import reverse

from polls.models import Choice, Question
# ...
def vote(request, question_id):
    p = get_object_or_404(Question, pk=question_id)
    try:
        selected_choice = p.choice_set.get(pk=request.POST['choice'])
    except (KeyError, Choice.DoesNotExist):
        # Redisplay the question voting form.
        return render(request, 'polls/detail.html', {
            'question': p,
            'error_message': "You didn't select a choice.",
        })
    else:
        selected_choice.votes += 1
        selected_choice.save()
        # Always return an HttpResponseRedirect after successfully dealing
        # with POST data. This prevents data from being posted twice if a
        # user hits the Back button.
        return HttpResponseRedirect(reverse('polls:results', args=(p.id,)))

donarb

unread,
Dec 2, 2014, 11:37:02 AM12/2/14
to django...@googlegroups.com
Look at the regex for the results path match, you have a lowercase ell where there should be a question mark. 

Terry Lang

unread,
Dec 2, 2014, 12:58:31 PM12/2/14
to django...@googlegroups.com
That fixed it. I guess my eyes are getting bad. Thanks for the help.


On Tuesday, December 2, 2014 6:39:46 AM UTC-8, Terry Lang wrote:
Reply all
Reply to author
Forward
0 new messages