Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 在/archive中找不到页面/_Django - Fatal编程技术网

Django 在/archive中找不到页面/

Django 在/archive中找不到页面/,django,Django,编辑:算出了,请看底部。 我正在Django中编写一个简单的博客应用程序,并使用guide在本地部署它。我已经完成了指南,所有内容都是名义上的,所以我决定扩展该功能以查看博客文章的存档。这就是索引目前的工作方式,但我想将其移动到/archive/。我又去看了一次教程来刷新我的记忆,它说我必须做三件事: 在url.py中写入根URLconf 在views.py中编写view函数 为视图编写模板 我对URLconf进行了如下编辑: urlpatterns = patterns('', #ot

编辑:算出了,请看底部。

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

  • 在url.py中写入根URLconf
  • 在views.py中编写view函数
  • 为视图编写模板
  • 我对URLconf进行了如下编辑:

    urlpatterns = patterns('',
        #other patterns
        url(r'^archive/', 'RehabLog.views.archive'),
    )
    
    我编辑了my views.py以添加此功能:

    def archive(request):
        posts = Post.objects.filter(published=True)
        return render(request, 'RehabLog/archive.html', {'posts':posts})
    
    我把一切都保存了下来,重新启动了foreman。当我加载页面时,我得到一个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/”,包括(admin.site.url)),
    url(r'^$','RehabLog.views.index'),
    url(r'^(?P[\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'),
    )
    
    urlpatterns=patterns(“”,
    url(r“^admin/”,包括(admin.site.url)),
    url(r“^archive/”、“RehabLog.views.archive”),
    url(r'^$','RehabLog.views.index'),
    url(r'^(?P[\w\-]+)/$,'RehabLog.views.post'),
    )
    

    现在可以了。有人能解释一下原因吗?

    /archive/
    URL首先与
    URL(r'^(?p[\w-]+)/$,'RehabLog.views.post')
    匹配,所以您的实际规则
    URL(r'^archive/,'RehabLog.views.archive')
    从未达到。当您更改订单时,第一条匹配的规则是正确的。

    请提供完整的错误堆栈跟踪。您可以提供完整的错误日志。@matino我找到了。请看上面。你应该把你的答案作为答案贴出来。或者删除这个问题。@vikingosegundo我在10岁以下不能这么做。它告诉我编辑这个问题或者把它贴在评论下面。