Djoser+Vue注册请求404:/api/v1/users路径匹配失败求助
POST 请求 /api/v1/users 返回404错误排查方案
向/api/v1/users发送POST请求时返回404错误,尝试改用re_path无效,前端提交后无法跳转至localhost:8080/log-in。
错误日志
Not Found: /api/v1/users [15/Oct/2023 22:30:42] "POST /api/v1/users HTTP/1.1" 404 7646
Django URL配置(urls.py)
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('api/v1/', include('djoser.urls')), path('api/v1/', include('djoser.urls.authtoken')) ]
前端SignUpView.vue相关代码
methods: { submitFrom(e) { const formData = { username: this.username, password: this.password } axios .post("/api/v1/users", formData) .then(response => { console.log(response) this.$router.push('log-in') })
错误截图
- 注册时显示错误:

- 页面未找到(404):

排查与解决方案
- 修正请求URL的斜杠
Djoser默认的用户注册端点是/api/v1/users/(末尾带斜杠),你的请求URL缺少斜杠。Django默认的APPEND_SLASH机制在跨域场景下可能无法自动重定向,修改前端请求代码:
axios.post("/api/v1/users/", formData)
- 确认Djoser与DRF配置
检查settings.py是否正确注册相关应用并配置认证:
INSTALLED_APPS = [ # 其他应用 'rest_framework', 'rest_framework.authtoken', 'djoser', ] REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework.authentication.TokenAuthentication', ), }
验证已注册路由
安装django-extensions后运行python manage.py show_urls,查看输出中是否存在/api/v1/users/的POST路由。如果不存在,检查Djoser版本是否与教程一致,不同版本的路由结构可能有差异。配置跨域支持
前端运行在localhost:8080、后端在localhost:8000时,需安装django-cors-headers并配置:
INSTALLED_APPS = [ # 其他应用 'corsheaders', ] MIDDLEWARE = [ 'corsheaders.middleware.CorsMiddleware', 'django.middleware.common.CommonMiddleware', # 其他中间件 ] CORS_ALLOWED_ORIGINS = [ "http://localhost:8080", ]
内容的提问来源于stack exchange,提问作者november
相关产品推荐
相关产品推荐

