我正在尝试在Django中的多个URL的同一模型上使用ListView。具体来说,我有一个主页使用ListView
和Pagination
来发布博文,我希望使用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)。我有什么选择呢?
答案 0 :(得分:1)
网址/archive/
与详细信息视图的网址格式匹配。您有两种选择:
slug="archive"
更改各个帖子的网址格式,以便它不会与存档网址格式发生冲突。例如:
url(r'^posts/(?P<slug>[a-zA-Z0-9-]+)/?$', DetailView.as_view(model=Post,
)),`