【发布时间】:2020-02-29 06:29:05
【问题描述】:
我正在关注本教程:https://www.youtube.com/watch?v=Z4D3M-NSN58
这是我得到 404 错误的地方:https://www.youtube.com/watch?v=Z4D3M-NSN58&t=1044s
到目前为止我做了什么:
建立一个新项目,
创建了一个虚拟环境,
设置views.py,
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(response):
return HttpResponse("<h3>MySite</h3>")
在我的 main 文件夹中创建 urls.py,
from django.urls import path
from . import views
urlpatterns = [
path("", views.index, name="index"),
]
修改project文件夹中的urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('home/', include("main.urls")),
]
连接到http://127.0.0.1:8000/ 后,我收到 404 错误。
Page not found (404)
Request Method: GET
Request URL: http://127.0.0.1:8000/
Using the URLconf defined in project.urls, Django tried these URL patterns, in this order:
admin/
home/
The empty path didn't match any of these.
我无法继续。
解决方案:
project 文件夹中的urls.py 有两个路径,一个用于 admin/,一个用于 home/。
urlpatterns = [
path('admin/', admin.site.urls),
path('home/', include("main.urls")),
]
尝试连接到http://127.0.0.1:8000/home 或http://127.0.0.1:8000/admin 有效,但留空路径无效。
这是因为如果您键入 /home/,它会进入 main/urls.py 并查找 /home/ 路径.路径就在那里,它显示了views.py 中的内容。为了显示所需的输出而不在 URL 末尾输入路径,我必须将 /home/ 路径更改为 project/ 内的“空”路径urls.py
urlpatterns = [
path("admin/", admin.site.urls),
path("", include("main.urls")),
]
现在如果没有输入路径:http://127.0.0.1:8000/ 它会在 main/urls.py 中寻找一个空路径。它会发现一条空路径指向 project/views.index,这就是它所显示的内容。
【问题讨论】:
-
您正在尝试访问根路径
/,但您的视图与 URL 模式home/相关联。尝试转至http://127.0.0.1:8000/home。 -
Django 中的分层 URL 模式是累积的。见docs.djangoproject.com/en/2.2/topics/http/urls
-
@mario_sunny 谢谢,它有效。我想知道为什么当教程中的人进入根路径时,它会为他显示消息,而不是 404。
-
它也不应该在教程中工作。可能是
path('', include("main.urls")),改成path('home/', include("main.urls")),后没有保存,所以服务器还在使用旧版本的文件。
标签: python django http-status-code-404