0

我正在使用基于 django 1.1 的“Practical Django 2nd edition”书练习 django 我安装了 django 1.5 所以我应该弄清楚 django 版本之间的变化并编写正确的代码(thanx django 文档)

django 1.5 中的通用视图发生了很大变化,但最终我明白了。我的 urls.py 中有四个网址,如下所示:

urlpatterns = patterns('',
    url(r'^(?P<year>\d{4})/$', EntryYearArchiveView.as_view(), name='coltrane/Entry_Archive_year'),
    url(r'^(?P<year>\d{4})/(?P<month>\w{3})/$', EntryMonthArchiveView.as_view(),name='coltrane/Entry_month_Archive'),
    url(r'^(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/(?P<slug>[-\w]+)/$',
        EntryDateDetailView.as_view(), name='coltrane/Entry_Date_Detail'),
    url(r'$', ArchiveIndexView.as_view(model=Entry, date_field="pub_date"), name='coltrane/Entry_Archive'),
)

和每个 url 的视图。如您所见, ArchiveViewIndex的 url 只是一个 $ 符号,因此地址 example.com/weblog/应该运行它。而EntryYearArchiveView 获得一年。但有些不对劲!的地址example.com/weblog/2013/仍然运行ArchiveIndexView但不是EntryYearArchiveView。EntryMonthArchiveView出错了。YearArchive 模板的名称应该是Entry_archive_year。我在这里搞什么鬼?

4

1 回答 1

0

将评论标记为将来参考的答案。

更改最后一个 URL

url(r'$', ArchiveIndexView.as_view(model=Entry, date_field="pub_date"), name='coltrane/Entry_Archive'),

url(r'^$', ArchiveIndexView.as_view(model=Entry, date_field="pub_date"), name='coltrane/Entry_Archive'),

使其正确匹配 URL 模式。

于 2013-06-02T00:28:42.383 回答