Django 2.2.5配置URL后访问本地8000端口出现404错误求助
问题分析与解决方法
嘿,我一眼就瞅出问题所在啦!你遇到的404错误,核心原因是Django 2.x版本的path()函数不支持正则表达式语法,但你却在path()里用了正则的r'^$'写法,导致根路径匹配失败。
具体原因拆解
Django 2.0之后把URL配置分成了两种明确的方式:
path():用于简单的路径匹配,不需要正则符号,直接写路径字符串就行,空字符串''就代表根路径(也就是http://127.0.0.1:8000/)。re_path()(或者旧版的url()):专门用来处理带正则表达式的路径匹配,这时候才需要用r'^$'这种正则语法来匹配空路径。
你现在用了path(r'^$', ...),Django会把^$当成字面量路径去匹配,自然找不到对应的视图,就抛出404了。
两种修正方案
方案1:用path()的正确写法(推荐)
直接把r'^$'改成空字符串,这是Django 2.x+推荐的简洁写法:
from django.contrib import admin from django.urls import path from first_app import views urlpatterns = [ path('', views.index, name='index'), # 这里改成空字符串 path('admin/', admin.site.urls), ]
方案2:改用re_path()(适合需要正则的场景)
如果你习惯用正则写法,可以换成re_path(),记得要先导入它:
from django.contrib import admin from django.urls import path, re_path # 新增re_path导入 from first_app import views urlpatterns = [ re_path(r'^$', views.index, name='index'), path('admin/', admin.site.urls), ]
验证方法
改完之后重启Django开发服务器,再访问http://127.0.0.1:8000,应该就能看到"Hello World!"啦!
内容的提问来源于stack exchange,提问作者Sheikh Rasel Ahmed
相关产品推荐
相关产品推荐

