Django ListView用于多个URL中的相同模型

时间:2014-09-03 06:44:12

标签: django

我正在尝试在Django中的多个URL的同一模型上使用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 个答案:

答案 0 :(得分:1)

网址/archive/与详细信息视图的网址格式匹配。您有两种选择:

  1. 将归档网址格式移动到详细网址格式上方。请注意,这意味着您无法发布slug="archive"
  2. 的帖子
  3. 更改各个帖子的网址格式,以便它不会与存档网址格式发生冲突。例如:

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