【问题标题】:Django 'Page not found' error when setting up URLs设置 URL 时出现 Django 'Page not found' 错误
【发布时间】: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/homehttp://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


【解决方案1】:

添加你的 urls.py

urlpatterns = [ 路径(“”,views.index,名称=“索引”), ]

并编写一个视图来显示消息。

【讨论】:

    【解决方案2】:

    正如您在主 urls.py 中放置 /home 一样

    urlpatterns = [
            path('admin/', admin.site.urls),
            path('home/', include("main.urls")),
        ]
    

    所以如果你去 localhost:8000/ 会得到 404 错误

    你必须去 localhost:8000/home 才能得到索引页

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-05
      • 1970-01-01
      • 1970-01-01
      • 2015-04-02
      • 2021-11-23
      • 1970-01-01
      相关资源
      最近更新 更多