如何在 Django Rest Framework 的视图集中添加对自定义操作的特定访问级别?
How to add a specific level of access to a custom action in viewset in Django Rest Framework?
我在 Django Rest Framework 中有一个带有所有 crud 函数的 ModelViewSet,并将权限设置为 IsAuthenticated,但我做了一个自定义操作并希望它是 public,但我不知道该怎么做由于文档仅显示如何使用 @api_view() 执行此操作,因此这是我的 ModelViewSet
class UserViewSet(viewsets.ModelViewSet):
"""User viewset"""
queryset = User.objects.all()
serializer_class = UserModelSerializer
authentication_classes = [TokenAuthentication]
permission_classes = [IsAuthenticated]
@action(detail=False, methods=['post'])
def signup(self, request):
"""Sign Up users without profile. """
serializer = UserSignUpSerializer(data=request.data)
if serializer.is_valid(raise_exception=True):
user = serializer.save()
data = {
'user' : user,
}
return Response(data, status=status.HTTP_201_CREATED)
@action(detail=False, methods=['post'])
def login(self, request, *args, **kwargs):
""" Handle logins request. """
serializer = UserLoginSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
user, token = serializer.save()
data= {
'user': user,
'access_token' : token
}
return Response(data, status=status.HTTP_201_CREATED)
我想做登录@actionpublic,希望大家帮帮我
您可以将参数添加到 action deacrotor 以更改权限 class。
@action(detail=False, methods=['post'], permission_classes=[AllowAny])
def login(self, request, *args, **kwargs):
""" Handle logins request. """
serializer = UserLoginSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
user, token = serializer.save()
data= {
'user': user,
'access_token' : token
}
return Response(data, status=status.HTTP_201_CREATED)
我在 Django Rest Framework 中有一个带有所有 crud 函数的 ModelViewSet,并将权限设置为 IsAuthenticated,但我做了一个自定义操作并希望它是 public,但我不知道该怎么做由于文档仅显示如何使用 @api_view() 执行此操作,因此这是我的 ModelViewSet
class UserViewSet(viewsets.ModelViewSet):
"""User viewset"""
queryset = User.objects.all()
serializer_class = UserModelSerializer
authentication_classes = [TokenAuthentication]
permission_classes = [IsAuthenticated]
@action(detail=False, methods=['post'])
def signup(self, request):
"""Sign Up users without profile. """
serializer = UserSignUpSerializer(data=request.data)
if serializer.is_valid(raise_exception=True):
user = serializer.save()
data = {
'user' : user,
}
return Response(data, status=status.HTTP_201_CREATED)
@action(detail=False, methods=['post'])
def login(self, request, *args, **kwargs):
""" Handle logins request. """
serializer = UserLoginSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
user, token = serializer.save()
data= {
'user': user,
'access_token' : token
}
return Response(data, status=status.HTTP_201_CREATED)
我想做登录@actionpublic,希望大家帮帮我
您可以将参数添加到 action deacrotor 以更改权限 class。
@action(detail=False, methods=['post'], permission_classes=[AllowAny])
def login(self, request, *args, **kwargs):
""" Handle logins request. """
serializer = UserLoginSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
user, token = serializer.save()
data= {
'user': user,
'access_token' : token
}
return Response(data, status=status.HTTP_201_CREATED)