【问题标题】:Page not found 404 on Django site?在 Django 网站上找不到页面 404?
【发布时间】:2014-11-01 04:42:31
【问题描述】:

我正在按照 Django 网站上的教程创建一个简单的投票应用程序。然而,Django 无法解析 "//127.0.0.1:8000/polls" ,即使我在 mySite/urls.py 中定义了正则表达式。我在 virtualenv 中执行此操作,并安装了最新的 Django (1.7)。

我的站点/urls.py:

from django.conf.urls import patterns, include, url
from django.contrib import admin

urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^polls/', include('polls.urls')),
)

mySite/polls/urls.py:

from django.conf.urls import patterns, url
from polls import views

urlpatterns = patterns('',
url(r'^$', views.index, name='index'), 
)

mySite/polls/views.py:

from django.shortcuts import render
from django.http import HttpResponse
def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

mySite/settings.py:

 ...
 INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'polls',
 ) 
  ....
 ROOT_URLCONF = 'mySite.urls'

我得到的错误:

Using the URLconf defined in mySite.urls, Django tried these URL patterns, in this order: ^admin/  
The current URL, polls, didn't match any of these.

【问题讨论】:

  • 看起来您没有在INSTALLED_APPS 列表中包含polls 包另外,请确保您在投票包中包含空白__init__.py
  • 我做了,看看我的编辑。
  • 我将 ROOT_URLCONFIG 更改为 'urls' 并且它现在可以工作了
  • 我想这取决于你把你的 ROOT urls.py 放在哪里,你相应地设置你的 ROOT_URLCONFIG,如果你在包含 manage.py 的最外层文件夹中有它,那么“urls”就可以了。如果你把它放在其他文件夹中,那么你必须做 ".urls"
  • 127.0.0.1:8000/admin/ 工作吗?你试过 127.0.0.1:8000/polls/ (包括斜杠)吗?

标签: django views django-urls


【解决方案1】:

找不到页面?

如果您在此处收到错误页面,请检查您要转到 http://localhost:8000/polls/ 而不是 http://localhost:8000/

来源:https://docs.djangoproject.com/en/3.0/intro/tutorial01/

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,并通过在 http://server:port/ 之后添加 /polls 解决了它,因此服务器中的最终地址如下所示: http://server:port/polls

    【讨论】:

      【解决方案3】:

      访问127.0.0.1:8000/polls 的另一种方法是在访问127.0.0.1:8000 时重定向浏览器。通过编辑.../mysite/mysite/urls.py 完成如下:

      from django.conf.urls import include, url
      from django.contrib import admin
      from polls import views
      
      urlpatterns = [
          url(r'^admin/', admin.site.urls),
          url(r'^polls/', include('polls.urls', namespace='polls')),
          url(r'^$', views.index, name='index'),
      ]
      

      【讨论】:

      • 如何为您工作?详细说明。 stackoverflow.com/help/how-to-answer
      • 在 site1/urls.py 文件中添加“从民意调查导入视图”并在 urlpatterns 列表中添加 url(r'^$', views.index, name='index'),
      • 更新你的答案。
      【解决方案4】:

      2017-10-05_12:03 ~/mysite/mysite
      $ vi urls.py 2017-10-05_12:04 ~/mysite/mysite
      $ cd ../.. 2017-10-05_12:04 ~
      $ mv mysite SENSIBLE_NAME_DJANGO_ROOT

      【讨论】:

        【解决方案5】:

        在您的Mysite/urls.py 中添加以下行

        url(r'^$', views.index, name='index'),
        

        并检查。如果您已正确创建项目,它应该可以工作。否则,可能会碰巧有多个文件如此混乱。

        【讨论】:

          【解决方案6】:

          就我而言,这是一个愚蠢的错误。我想集成插件 django-tinymce,并对其进行测试。因此,按照this 指南,我执行了第 3 步并将变量导出到路径。当服务器再次运行时,我收到了 not found 错误,显示消息:

          使用 testtinymce.urls 中定义的 URLconf,Django 尝试了这些 URL 模式,按以下顺序: ....

          但我不知道它到底是什么,直到我记得导出变量 DJANGO_SETTINGS_MODULE

          在终端中运行 unset DJANGO_SETTINGS_MODULE 解决了我的问题。希望它也对某人有所帮助。

          【讨论】:

            【解决方案7】:

            我遇到了同样的问题。

            事实证明,我对名为“mysite”的多个目录感到困惑。

            我错误地在“mysite”根目录(其中包含“manage.py”)中创建了一个 urls.py 文件,然后将其粘贴到网站上的代码中。

            为了更正它,我删除了这个文件,进入 mysite/mysite 目录(其中包含“settings.py”),修改了现有的“urls.py”文件,并将代码替换为教程代码。

            简而言之,确保您的 urls.py 文件位于正确的目录中。

            【讨论】:

            • 感谢您的帮助。 Django 真的应该在他们的教程中强调这一点。
            【解决方案8】:

            您将 urls.py 文件夹放入外部 MySite 文件夹,您应该将其放入内部文件夹,因此它不是 mySite/urls.py,而是 mySite/mySite/urls.py:

            我在做教程时遇到了同样的错误

            【讨论】:

              【解决方案9】:

              为了让有此问题的初学者按照教程清楚地回答,项目根 URLconf 与 settings.py 位于同一文件夹中,即:

               mysite/mysite/urls.py
              

              只需确保导入“包含”即可。代码如下:

              from django.conf.urls import include, url
              from django.contrib import admin
              
              urlpatterns = [
                  url(r'^admin/', admin.site.urls),
                  url(r'^polls/', include('polls.urls')),
              ]
              

              所以在 mysite/mysite/settings.py:

              该行应该是:

              ROOT_URLCONF = 'mysite.urls'

              您不需要创建一个全新的根 URLconf。

              【讨论】:

                【解决方案10】:

                其实问题是你没有注意到 mysite/urls.py 和 polls/urls.py 是两个不同的文件,您修改了 polls/urls.py 而不是将 mysite/urls.py 放在 ...mysite\ 的 urls.py 文件中我的网站文件夹。

                【讨论】:

                  【解决方案11】:

                  Django 无法解析 127.0.0.1:8000/polls,因为 url 配置定义为 r'^polls/'

                  通常的解决方法:

                  mySite/urls.py:

                  from django.conf.urls import patterns, include, url
                  from django.contrib import admin
                  
                  urlpatterns = patterns('',
                  url(r'^admin/', include(admin.site.urls)),
                  url(r'^polls/', include('polls.urls')),
                  )
                  

                  注意: 每当 Django 遇到 include() 时,它都会切断与该点匹配的 URL 的任何部分,并将剩余的字符串发送到包含的 URLconf 以进行进一步处理。

                  mySite/polls/urls.py:

                  from django.conf.urls import patterns, url
                  from polls import views
                  
                  urlpatterns = patterns('polls.views',
                  url(r'^$', 'index', name='index'), 
                  )
                  

                  注意:您可以使用 patterns() 函数的第一个参数来指定要应用于每个视图函数的前缀,而不是为 urlpatterns 中的每个条目都输入它。

                  回答如果

                  如果你想访问127.0.0.1:8000/polls 注意:不带斜杠

                  使用基于视图的网址

                  url(r'^polls', 'polls.views.index', name='index'),
                  

                  所以现在您可以访问127.0.0.1:8000/polls 而无需使用斜杠。

                  【讨论】:

                  • 你有一个错误,你正在配置 mySite/polls/urls.py 文件两次。
                  • @javidazac 啊..!现已修复
                  • 你有 mySite/polls/urls.py,所以全局 url 在 mySite/mySite/urls.py 中。不在 mySite/urls.py 中。
                  【解决方案12】:

                  根据您放置 ROOT urls.py 的位置,您可以相应地设置 ROOT_URLCONFIG,如果您将它放在包含 manage.py 的最外层文件夹中,那么“urls”就可以了。如果你在其他文件夹中有它,那么你必须做“.urls”

                  感谢jerryh91的答案

                  有关其工作原理的更多信息,请查看How Django processes a request

                  【讨论】:

                    【解决方案13】:

                    您正在访问http://yourdomain.com/,但您没有为“/”定义任何 URL。

                    你有两个选择:

                    1. 如果您想访问投票应用程序的索引页面,您必须输入 URL:yourdomain.com/polls

                    2. 您还可以修改 mySite/urls.py 文件以仅从 yourdomain.com 访问

                      from django.conf.urls import patterns, include, url
                      
                      from django.contrib import admin
                      urlpatterns = patterns('',
                      
                      url(r'^admin/', include(admin.site.urls)),
                      
                      url(r'^$', include('polls.urls')),
                      
                      )
                      

                    【讨论】:

                      猜你喜欢
                      • 2018-09-12
                      • 2016-08-01
                      • 2016-08-01
                      • 2015-10-22
                      • 2014-03-20
                      • 2020-10-27
                      • 2019-07-21
                      • 1970-01-01
                      • 2017-01-04
                      相关资源
                      最近更新 更多