在/ archive /找不到页面

时间:2013-07-05 08:50:36

标签: django

编辑:想出来,请看底部。

我正在Django中编写一个简单的博客应用程序,并使用this指南在本地部署它。我已经完成了指南,所有内容都是名义上的,所以我决定扩展功能以查看博客文章的存档。这就是索引目前的功能,但我想把它移到/ archive /。我再次进入教程以刷新我的记忆,它说我必须做三件事:

  1. 在urls.py
  2. 中写入根URLconf
  3. 在views.py
  4. 中编写视图功能
  5. 编写视图的模板
  6. 我编辑了URLconf,如下所示:

    urlpatterns = patterns('',
        #other patterns
        url(r'^archive/', 'RehabLog.views.archive'),
    )
    

    我编辑了我的views.py以添加此功能:

    def archive(request):
        posts = Post.objects.filter(published=True)
        return render(request, 'RehabLog/archive.html', {'posts':posts})
    

    我已经保存了所有并重新启动了工头。当我加载页面时,我收到404错误,告诉我没有帖子与给定查询匹配。我错过了什么?

    答案

    我记得读过URLConfs的顺序非常重要。

    以前我曾经:

    urlpatterns = patterns('',
        url(r'^admin/', include(admin.site.urls)),
        url(r'^$', 'RehabLog.views.index'),
        url(r'^(?P<slug>[\w\-]+)/$', 'RehabLog.views.post'),
        url(r'^archive/', 'RehabLog.views.archive'),
    )
    

    而现在我有:

    urlpatterns = patterns('',
        url(r'^admin/', include(admin.site.urls)),
        url(r'^archive/', 'RehabLog.views.archive'),
        url(r'^$', 'RehabLog.views.index'),
        url(r'^(?P<slug>[\w\-]+)/$', 'RehabLog.views.post'),
    )
    

    现在有效。谁能解释为什么?

1 个答案:

答案 0 :(得分:0)

/archive/网址首先被url(r'^(?P<slug>[\w\-]+)/$', 'RehabLog.views.post')匹配,因此您的实际规则url(r'^archive/', 'RehabLog.views.archive')从未到达。当您更改订单时,匹配的第一个规则是正确的。