NoReverseMatch – Tutorial para principiantes de Django 1.7

Estoy siguiendo el tutorial de principiantes en Django 1.7.1 y estoy recibiendo este error

Reverse for 'vote' with arguments '(5,)' and keyword arguments '{}' not found. 0 pattern(s) tried: [] `poll\templates\poll\detail.html, error at line 12` 

después de un poco de investigación, encontré personas que hacían preguntas similares y alguien sugirió que deberían eliminar el efectivo $ de la url general, porque el urlloader solo toma la cadena vacía, mientras que esto no me da el error No Reverse Match, se confunde todo lo demás, siempre que trato de llegar a cualquier otra url, me redirige a la url principal, mientras que sin retirar el dinero en efectivo puedo proceder perfectamente a estas urls. Entonces, ¿qué es lo que estoy haciendo mal?

Aquí está la URL del proyecto:

 urlpatterns = patterns('', url(r'^poll/', include('poll.urls', namespace="poll")), url(r'^admin/', include(admin.site.urls)), ) 

Y las URLs de la aplicación:

 from django.conf.urls import patterns, url from poll import views urlpatterns = patterns('', #eg /poll/ url(r'^$', views.IndexView.as_view(), name='index'), #eg /poll/5/ url(r'^(?P\d+)/$', views.DetailView.as_view(), name='detail'), #eg /poll/5/results/ url(r'^(?P\d+)/results/$', views.ResultsView.as_view(), name='results'), #eg /poll/5/votes/ url(r'^(?P\d+)/votes/$', views.votes, name='votes'), ) 

Y las vistas:

 from django.shortcuts import render, get_object_or_404 from django.http import HttpResponseRedirect from django.core.urlresolvers import reverse from django.views import generic from poll.models import Question, Choice class IndexView(generic.ListView): template_name = 'poll/index.html' context_object_name = 'latest_question_list' def get_queryset(self): """Return the last five published questions.""" return Question.objects.order_by('-pup_date')[:5] class DetailView(generic.DetailView): model = Question template_name = 'poll/detail.html' class ResultsView(generic.DetailView): model = Question template_name = 'poll/results.html' def votes(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, 'poll/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('poll:results', args=(p.id,))) 

También creo que podría estar relacionado con la forma post se están pasando la acción {%URL%} y la post del método, así que aquí está la línea de código del archivo de plantilla especificado en el error

Por favor, avíseme si necesita algo más, y gracias de antemano

El nombre de la URL en urls.py es votes y usted está buscando una poll:vote , corríjalo:

 
HERE ^