Django URL配置错误:访问/index路径出现404页面未找到求助
解决Django URL配置导致的404错误
你遇到的问题核心是混淆了path()和re_path()的用法,同时URL路径规则没对应上你访问的/index地址,咱们一步步来修复:
问题根源
Django的path()是精确路径匹配函数,不需要使用正则表达式的锚点符号(^和$);只有re_path()(或旧版的url())才支持正则语法。你在path()里写了正则符号,导致路径匹配逻辑出错,再加上/index没有对应的URL规则,就出现了404。
步骤1:修正主项目URL配置(f_project.urls)
先删掉多余的from first_app import urls导入(include()只需要字符串形式的应用URL模块路径),然后调整规则写法:
from django.contrib import admin from django.urls import path, include from first_app import views urlpatterns = [ path('admin/', admin.site.urls), # 匹配根路径 http://127.0.0.1:8000/ path('', views.index), # 匹配以first_app/开头的路径,转发给first_app的URL配置 path('first_app/', include('first_app.urls')), # 新增规则,匹配你访问的http://127.0.0.1:8000/index path('index/', views.index), ]
步骤2:修正应用URL配置(first_app.urls)
同样把path()里的正则符号去掉,改成精确匹配的写法:
from django.urls import path from first_app import views urlpatterns = [ # 匹配first_app/下的根路径,即http://127.0.0.1:8000/first_app/ path('', views.index, name='index'), ]
为什么之前会出现404?
你访问的http://127.0.0.1:8000/index在原配置里找不到匹配规则:
- 主URL里的
path(r'^$', views.index)因path()不识别正则符号,无法正确匹配路径 path(r'^first_app/', include(...))同理,正则符号导致first_app/开头的路径也无法匹配- 应用URL里的规则只对应
first_app/下的根路径,和/index完全无关
验证修复
修改完成后重启Django服务:
- 访问
http://127.0.0.1:8000/会触发主URL的根路径规则 - 访问
http://127.0.0.1:8000/index会触发新增的index/规则 - 访问
http://127.0.0.1:8000/first_app/会触发应用URL里的规则
内容的提问来源于stack exchange,提问作者maria
相关产品推荐
相关产品推荐

