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

使用Django REST Framework获取用户详情返回404错误排查

问题

我需要通过Django REST Framework返回用户详情信息。我的views.py中定义了UserViewSet类如下:

class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer
    pagination_class = LimitOffsetPagination
    # permission_classes = (IsAdmin, )
    search_fields = ('username',)
    lookup_field = 'username'

我的urls.py配置了如下路由:

from rest_framework.routers import DefaultRouter
from .views import UserViewSet
router = DefaultRouter()
router.register(r'users', UserViewSet)
urlpatterns = [
    path('auth/', include(auth_patterns)),
    path('', include(router.urls)),
]

使用Postman请求users/1/时返回Not found,请问我哪里操作出错了?

解答

问题出在你设置了lookup_field = 'username',这会让DRF用用户名作为详情接口的匹配字段,而非默认的主键id。

你现在请求users/1/,DRF会去数据库里找username等于'1'的用户,显然不存在这类用户,所以返回404。

有两种解决方式:

  • 如果你想保留用用户名查询详情,就把请求路径改成users/[实际用户名]/,比如用户名为alex,就请求users/alex/
  • 如果你想换回用id查询,直接删掉lookup_field = 'username'这一行即可,DRF会默认用主键id匹配,此时users/1/就能正常返回对应用户信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 15:25:23