在 Django 网站上找不到页面 404?

Posted

技术标签:

【中文标题】在 Django 网站上找不到页面 404?【英文标题】:Page not found 404 on Django site? 【发布时间】: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/ (包括斜杠)吗? 【参考方案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'),
]

【讨论】:

如何为您工作?详细说明。 ***.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。

你有两个选择:

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

    您还可以修改 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')),
    
    )
    

【讨论】:

以上是关于在 Django 网站上找不到页面 404?的主要内容,如果未能解决你的问题,请参考以下文章

laravel 5.1 表示除了 ('/') 之外的所有其他路由,使用 ec2 在在线亚马逊服务器上找不到 404 页面

找不到页面错误 404 localhost Apache/2.4.10 (Win32)

示例教程在 Django 3 上找不到页面错误

Django:找不到页面(404)

在 AWS 上找不到 404

在 localhost WordPress 网站上找不到页面