Django rest_framework,在特定方法中禁用身份验证和权限

时间:2018-12-06 11:27:40

标签: django django-rest-framework

我有一个叫做UserViewSet的班级:

class UserViewSet(viewsets.ModelViewSet):
    queryset = UserData.objects.all()
    serializer_class = UserSerializer
    from rest_framework.permissions import IsAuthenticated
    from rest_framework.authentication import TokenAuthentication
    permission_classes = (IsAuthenticated,)
    authentication_classes = (TokenAuthentication,)

    @action(methods=['post'], detail=False)
    def signup_user(self, request):
        request_data = request.query_params
        if len(request_data) == 0:
            return Response("Empty params !")

现在我想注册一个新用户,这将引发此错误:

  

{       “ detail”:“未提供身份验证凭据。” }

是由于AuthenticationPermission类。

那么在signup函数中禁用此类的正确方法是什么?

我使用了authentication_classespermission_classes 装饰器,但这对此功能没有影响。

1 个答案:

答案 0 :(得分:0)

action装饰器允许指定特定于操作的权限类。应该这样做:

    @action(methods=['post'], detail=False, permission_classes=[AllowAny])
    def signup_user(self, request):
        # ...

(不要忘记导入AllowAny