Django REST Framework路由404求助:/api/正常/api/rota无法访问
Django REST Framework路由404问题解决办法
问题根源
你配置的路由path('rota/', views.getRoutes)要求访问路径必须带末尾斜杠,但你访问的是127.0.0.1:8000/api/rota(不带斜杠),导致路由匹配失败,触发404错误。
解决方法
方法1:使用正确的访问路径
直接访问带末尾斜杠的地址:127.0.0.1:8000/api/rota/,即可正常匹配到getRoutes视图。
方法2:修改路由支持不带斜杠访问
如果希望同时兼容带斜杠和不带斜杠的路径,有两种实现方式:
- 去掉路由规则中的末尾斜杠:
# api目录下urls.py urlpatterns = [ path('', views.getMessage), path('rota', views.getRoutes), # 移除末尾的/ ]
这种设置下/api/rota可正常访问,但/api/rota/会触发404。
- 使用正则路由匹配两种情况:
# api目录下urls.py from django.urls import path, re_path from . import views urlpatterns = [ path('', views.getMessage), re_path(r'^rota/?$', views.getRoutes), # ?表示末尾斜杠为可选 ]
该配置下,/api/rota和/api/rota/都能正常匹配视图。
方法3:检查全局重定向设置
确保项目settings.py中的APPEND_SLASH配置为True(默认值即为True):
APPEND_SLASH = True
开启后,当访问不带斜杠的/api/rota时,Django会自动重定向到带斜杠的/api/rota/,避免404错误。
另外,你的getRoutes视图中路由列表的字符串缺少逗号,会导致两个字符串拼接成一个,建议修正:
routes=[ 'GET api/', 'GET api/rota' ]
内容的提问来源于stack exchange,提问作者Arlindo Junior
相关产品推荐
相关产品推荐

