You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django GET请求访问/v1/test/uuid接口返回404问题排查

错误原因

  1. 路由前缀不匹配:你访问的接口地址前缀是/v1/,但test相关路由没有配置v1前缀,Django只会匹配/test/xxx格式的请求到对应视图,带v1前缀的请求无法命中该路由。
  2. 路由方法使用错误:你使用了re_path编写路由,re_path仅支持正则表达式语法,不识别Django的<uuid:uuid>路径转换器语法,即使路径前缀正确也无法完成匹配。

修复方案

第一步:修改urls.py配置

  • 新增导入path方法
  • 给test路由添加v1前缀,同时替换re_path为path
    修改后代码如下:
from django.urls import re_path, path, include
from rest_framework.routers import DefaultRouter

from site_config import views

router = DefaultRouter()
router.register(
    r'site',
    views.SiteViewSet,
    basename='site'
)

urlpatterns = [
    re_path(r'^v1/', include(router.urls)),
    path('v1/test/<uuid:uuid>/', views.Test.as_view(), name='test'),
]

第二步(可选优化):优化视图异常处理

原视图中直接使用Site.objects.get(uuid=uuid)查询数据,当传入的uuid不存在时会直接抛出500错误,建议改为使用get_object_or_404封装查询逻辑,不存在时直接返回标准404响应:

from django.shortcuts import get_object_or_404

class Test(APIView):
    def get(self, request, *args, **kwargs):
        uuid = kwargs.get('uuid')
        resp = {'site': None}
        
        site = get_object_or_404(Site, uuid=uuid)
        resp['site'] = SiteSerializer(site).data
        return Response(resp)

内容的提问来源于stack exchange,提问作者Esther Suh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 03:36:03