2013-02-16 68 views
0

我有這個在我的模板文件:NoReverseMatch使用URL配置及在Django的1.4.x通用視圖

<a href="{% url polls.views.vote poll.id %}">Vote again?</a> 

這是我的URLconf:

urlpatterns = patterns('polls.views', 
    url(r'^$', 'index'), 
    url(r'^(?P<poll_id>\d+)/$', 'detail'), 
    url(r'^(?P<poll_id>\d+)/results/$', 'results'), 
    url(r'^(?P<poll_id>\d+)/vote/$', 'vote'), 
) 

我改變了一些看法使用泛型:

urlpatterns = patterns('polls.views', 
    url(r'^$', 
     ListView.as_view(
      queryset=Poll.objects.order_by('-pub_date')[:5], 
      context_object_name='latest_poll_list', 
      template_name='polls/index.html')), 
    url(r'^(?P<pk>\d+)/$', 
     DetailView.as_view(
      model=Poll, 
      template_name='polls/details.html')), 
    url(r'^(?P<pk>\d+)/results/$', 
     DetailView.as_view(
      model=Poll, 
      template_name='polls/results.html'), 
     name='results'), 
    url(r'^(?P<poll_id>\d+)/vote/$', 'vote'), 
) 

而現在顯示此錯誤:

未找到參數'(1,)'和關鍵字參數'{}'的'polls.views.results'反向。

我該如何解決這個問題?

回答

1

添加名稱到您的URL模式:

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

然後在模板中使用的名稱,而不是視圖名稱:

{% url results poll.id %} 
+0

奇怪的是,polls.views.results不起作用,但結果呢。 – blaze 2013-02-16 01:00:52

+1

沒有名爲'polls.views.results'的視圖,但是您使用名稱'results'定義了您的url模式,更多詳細信息https://docs.djangoproject.com/en/1.4/topics/http/urls/#naming -url圖案 – iMom0 2013-02-16 01:10:12