Django is great, and the tutorial is great.  I'm having a problem at the 
very end of tutorial-4.

I try to use generic views, and I get an error when I Redirect from the 
POST request in vote() to the Results page.  Details below.

The tutorial code says to put this in my urls.py:

    url(r'^(?P<pk>\d+)/results/$',
        DetailView.as_view(
            model=Poll,
            template_name='polls/results.html')
            ,name="poll_results" 
        ),

And this in my views.py:

 from django.shortcuts import get_object_or_404, render_to_response
from django.http import HttpResponseRedirect, HttpResponse
from django.core.urlresolvers import reverse
from django.template import RequestContext
from polls.models import Choice, Poll
    
        
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 the poll voting form.
        return render_to_response('polls/detail.html', {
            'poll': p,
            'error_message': "You didn't select a choice.",
        }, context_instance=RequestContext(request))
    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,)))
        ### OKAY:    return HttpResponseRedirect("/polls/%i/results" % p.id)
        ### OKAY:    return render_to_response("polls/results.html", 
{"poll": p})
        ### BAD:       return 
HttpResponseRedirect(reverse('polls.views.results', args=(p.id,)))



NoReverseMatch at /polls/4/vote/

Reverse for 'polls_results' with arguments '(4,)' and keyword arguments 
'{}' not found.
  
*Request Method:*
 
POST
  
*Request URL:*
 
http://127.0.0.1:8000/polls/4/vote/
  
*Django Version:*
 
1.4
  
*Exception Type:*
 
NoReverseMatch
  
*Exception Value:*
 
Reverse for 'polls_results' with arguments '(4,)' and keyword arguments 
'{}' not found.
  
*Exception Location:*
 
/Library/Python/2.7/site-packages/django/core/urlresolvers.py in 
_reverse_with_prefix, line 407
  
*Python Executable:*
 
/usr/bin/python
  
*Python Version:*
 
2.7.1
  
*Python Path:*
 
['/Users/s3/Desktop/CODE/APPSS3/EdAssistant/experiments/djtest',

 
'/Library/Python/2.7/site-packages/mercurial-2.0.2-py2.7-macosx-10.7-intel.egg',

 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',

 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7',

 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',

 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',

 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',

 '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python',

 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',

 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old',

 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload',

 
'/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC',

 '/Library/Python/2.7/site-packages']
  
*Server time:*
 
Mon, 16 Jul 2012 11:53:21 -0500
  

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/django-users/-/f-sjN1OtNuwJ.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to