djangorest框架-使用detail_route和detail_list

2024-03-30

在我的代码中,我有一个用户的视图集。 我想要的是只允许读取操作(/用户/42 and /users/)ReadOnlyModelViewSet 做得很好。

另外,我想要一个/用户/注册我可以的网址POST以便注册新用户。

class UserViewSet(viewsets.ReadOnlyModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer

    @list_route(methods=['post'])
    def register(request):
        serializer = UserSerializer(data=request.DATA)
        if serializer.is_valid():
            user = User.objects.create_user(
                username = serializer.init_data['username'],
                password = serializer.init_data['password'],
            )

            return Response(serializer.data, status=status.HTTP_201_CREATED)
        else:
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

有几个问题:

  • 这是这样做的正确方法吗?

  • 有没有具体的签名对于一个方法,如果我把它放在路由列表 or the 详细路线装饰师?因为在detail_route示例中,该方法的签名始终相同:方法名(自我,请求,pk=无):

thanks!


详细路由和详细列表将在 DRF 3.0 上弃用,而是使用 @action:

from rest_framework.decorators import action
    @action(methods=['POST'], detail=True)
    def sale(self):
       ...

当此方法将考虑由该端点表示的模型的单个实例时,请使用detail=True;当它需要表示该模型的查询集时,请使用False

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

djangorest框架-使用detail_route和detail_list 的相关文章

随机推荐