在 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”就可以了。如果你把它放在其他文件夹中,那么你必须做 "找不到页面?
如果您在此处收到错误页面,请检查您要转到 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 页面