Django Page Not Found问题求助:配置无误却持续报错
严格按照官方文档操作,但访问http://127.0.0.1:8000/mainpage/始终出现页面未找到错误,尝试修改路径、切换Debug=True/False都没用,该功能之前正常运行,现在持续报错。
相关代码
mainpage 应用的 urls.py
from django.urls import path from . import views urlpatterns = [ path("mainpage/", views.index, name="index"), ]
mainpage 应用的 views.py
from django.shortcuts import render from django.http import HttpResponse def index(request): return HttpResponse("My first page")
项目根目录的 urls.py
from django.contrib import admin from django.urls import path from django.contrib import admin from django.urls import include, path urlpatterns = [ path("mainpage/", include("mainpage.urls")), path('admin/', admin.site.urls), ]
错误提示
使用 mysite.urls 中定义的 URLconf,Django 按以下顺序尝试了这些 URL 模式:
mainpage/ mainpage/ [name='mainpage']
admin/
当前路径 mainpage/ 与其中任何一个都不匹配。
你看到此错误是因为你的 Django 设置文件中 DEBUG = True。将其更改为 False,Django 将显示标准的 404 页面。
问题原因
路由路径嵌套冲突了。根 urls.py 里已经配置了path("mainpage/", include("mainpage.urls")),所有以mainpage/开头的请求会转发到 mainpage 应用的 urls.py 处理。但 mainpage 的 urls.py 里又定义了path("mainpage/", views.index, name="index"),这会导致实际需要匹配的路径是mainpage/mainpage/,而你访问的是mainpage/,所以找不到对应的视图。
解决方法
修改 mainpage 应用的 urls.py,把路径改成空字符串,让它处理根路由转发过来的mainpage/路径:
from django.urls import path from . import views urlpatterns = [ path("", views.index, name="index"), ]
修改后重启开发服务器,再访问http://127.0.0.1:8000/mainpage/就能正常显示视图返回的内容了。
内容的提问来源于stack exchange,提问作者Ashley

