Django访问根路径返回404,空路径未匹配任何URL规则问题求助
问题原因
你当前的所有URL配置中没有对应**根路径(/)**的路由规则,Django收到http://127.0.0.1:8000/的GET请求时找不到匹配的处理函数,因此返回404。你现有配置的路由都是/department、/employee这类非根路径的接口,直接访问根路径自然无法匹配。
解决方案
根据你要展示的根路径内容选择对应方案即可:
- 方案1:根路径展示静态HTML页面
- 首先在项目根目录创建
templates文件夹,将你要展示的静态页面(比如index.html)放入该文件夹 - 打开项目
settings.py,找到TEMPLATES配置项,将DIRS的值改为:
TEMPLATES = [ { ... 'DIRS': [os.path.join(BASE_DIR, 'templates')], ... } ]
- 在
EmployeeApp的views.py中新增根路径处理视图:
from django.shortcuts import render def index(request): # 参数里的index.html替换成你自己的静态页面文件名 return render(request, 'index.html')
- 在
EmployeeApp的urls.py中新增根路径路由:
urlpatterns=[ # 新增这一行,匹配根路径 re_path(r'^$', views.index, name='index'), # 下方保留你原来的其他路由配置即可 re_path(r'^department$',views.departmentApi, name='department'), re_path(r'^department/([0-9]+)$',views.departmentApi, name='departmentApi'), ... ]
- 方案2:根路径直接跳转到现有接口页面
如果你不需要单独的根页面,想直接跳转至部门列表/员工列表页面,直接在EmployeeApp的urls.py中新增重定向路由即可:
from django.views.generic import RedirectView urlpatterns=[ # 示例为跳转到/department页面,要跳其他页面修改url参数即可 re_path(r'^$', RedirectView.as_view(url='/department')), # 下方保留你原来的其他路由配置即可 ... ]
补充说明
- 用
re_path匹配根路径必须写完整的正则r'^$',^代表字符串开头、$代表字符串结尾,二者组合才是完全匹配空的根路径 - 如果改用
path写法会更简洁,根路径路由直接写path('', views.index, name='index')即可,无需处理正则规则 - 想验证路由配置是否生效,可以安装
django-extensions包后运行python manage.py show_urls命令,查看所有已注册的路由列表
内容的提问来源于stack exchange,提问作者Mortida Jipenam
相关产品推荐
相关产品推荐

