2014-09-03 77 views
1

相同的模型,我試圖用一個ListView對在Django多個URL相同型號的Django的ListView。具體來說,我有使用博客文章ListViewPagination主頁,我想有使用ListView存檔頁面不pagination有不同的設計。於是,我就這樣做:在多個網址

urls.py:

from django.conf.urls import patterns, url 
from django.views.generic import ListView, DetailView 
from blogengine.models import Post 

urlpatterns = patterns('', 
    # index 
    url(r'^(?P<page>\d+)?/?$', ListView.as_view(
     model=Post, 
     paginate_by=4, 
     )), 
    # individual posts 
    url(r'^(?P<slug>[a-zA-Z0-9-]+)/?$', DetailView.as_view(model=Post, 
                  )), 
    # archive 
    url(r'^archive/$', ListView.as_view(
     model=Post, 
     )), 
) 

但發生的事情是Django的只是忽略了檔案鏈接,因爲基於類的觀點已經被使用(所以我纔得到一個404 )。我有什麼選擇呢?

回答

1

的網址/archive/是匹配的詳細視圖URL模式。您有兩種選擇:

  1. 將存檔url模式移到詳細url模式上方。請注意,這意味着你不能有slug="archive"
  2. 更改單個帖子的網址模式後,使其不與歸檔URL模式發生衝突。例如:

    url(r'^posts/(?P<slug>[a-zA-Z0-9-]+)/?$', DetailView.as_view(model=Post, 
                    )),`