创建 Django Rest Framework 临时 post 方法

Create Django Rest Framework ad-hoc post method

我正在使用 Django Rest Framework,我想创建一个临时 post 方法来注册新用户。

当我尝试下面的代码时,出现以下错误:

Expected view UserViewSet to be called with a URL keyword argument named "pk". Fix your URL conf, or set the .lookup_field attribute on the view correctly.

class UserViewSet(viewsets.ModelViewSet):

    queryset = User.objects.all()
    serializer_class = UserSerializer
    permission_classes = (permissions.AllowAny,)


    @list_route(methods=['post'])
    def register(self, request, pk=None):
        user = self.get_object()
        user.save()
        return Response(user)

您正在创建 用户,因此 self.get_object() 没有要获取的对象。如果您正在查看、更改或删除 已经 存在的对象(并且将由 URL 模式中的 pk 参数标识,则此方法将起作用).

您应该只创建一个新的用户对象而不是调用 self.get_object()