编辑:想通了,请看底部。
我正在用 Django 编写一个简单的博客应用程序,并使用本指南在本地部署它。我已经完成了指南,一切都是名义上的,所以我决定扩展功能来查看博客文章的存档。这就是索引目前的功能,但我想将其移至 /archive/。我再次去看教程以刷新我的记忆,它说我必须做三件事:
- 在 urls.py 中写入根 URLconf
- 在views.py中编写视图函数
- 为视图编写模板
我将 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 错误,告诉我No Post 与给定的查询匹配。我错过了什么?
回答
我记得阅读您的 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'),
)
现在工作。谁能解释为什么?