Django+React认证系统注册接口404错误排查求助
解决Django+React注册接口404 Not Found问题
核心排查方向:URL路由配置错误
这是404错误最常见的原因,你的代码里存在URL前缀重复的问题:
问题分析
- 你在app的
urls.py中给路由加了api/前缀:path("api/register/", ...) - 前端API工具类的
baseURL已经设置为http://127.0.0.1:8000/api/,请求时又拼接了register/,最终请求路径是/api/register/ - 如果项目根
urls.py中已经通过include将app的URL挂载到某个前缀下,会直接导致路径不匹配。
解决方案(二选一)
方案1:修改app的urls.py,移除重复的api/前缀
from django.urls import path from rest_framework_simplejwt.views import TokenObtainPairView, TokenRefreshView from .views import RegisterView, LoginView, RefreshTokenView urlpatterns = [ path("register/", RegisterView.as_view(), name="register"), path("login/", LoginView.as_view(), name="login"), path("token/refresh/", RefreshTokenView.as_view(), name="token_refresh"), ]
然后在项目根urls.py中添加app的路由挂载:
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('api/', include('your_app_name.urls')), # 替换为你的app实际名称 ]
方案2:保持app的urls.py不变,修改根urls.py直接挂载
如果不想修改app的路由,确保根urls.py直接include app的URL,不额外加前缀:
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('', include('your_app_name.urls')), # 无额外前缀 ]
其他需要修正的问题
1. View类权限属性拼写错误
你的RegisterView中写的是permissions_classes,正确的属性名是**permission_classes**(单数形式),否则会导致权限验证失败:
class RegisterView(APIView): permission_classes = [AllowAny] # 修正为单数 def post(self, request): # ... 原有代码逻辑
2. 确认app已添加到INSTALLED_APPS
在项目settings.py中确保你的app已经注册:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'rest_framework_simplejwt', 'your_app_name', # 添加你的app实际名称 ]
验证步骤
- 重启Django服务器
- 直接在浏览器访问
http://127.0.0.1:8000/api/register/,如果返回405 Method Not Allowed(因为是POST接口),说明路由配置正确;如果还是404,继续检查根URL和app注册情况。
内容的提问来源于stack exchange,提问作者Baker
相关产品推荐
相关产品推荐

