Django REST как не применять разрешение по умолчанию для запроса get
Я не хочу применять свой permission_classes
для get
запроса. Я пробовал @permission_classes(AllowAny)
, но ничего не получилось.
Вот мой код:
class BlogViewSet(viewsets.ModelViewSet):
queryset = Blog.objects.all()
serializer_class = BlogSerializer
pagination_class = BlogPagination
lookup_field = 'blog_slug'
permission_classes = [IsOwnerOrReadOnly & IsAuthorGroup]
@permission_classes(AllowAny)
def list(self, request):
if request.method == "GET":
blog = Blog.objects.all().order_by("id")
serializer = BlogSerializer(blog, many=True)
return Response(serializer.data)
else:
return Response(status=status.HTTP_404_NOT_FOUND)
вы можете просто передать класс разрешения следующим образом.
from rest_framework.permissions import IsAuthenticated, IsAuthenticatedOrReadOnly, AllowAny, IsAdminUser
class BlogViewSet(viewsets.ModelViewSet):
permission_classes = [IsAuthenticatedOrReadOnly,IsAuthenticated ]
queryset = Blog.objects.all()
serializer_class = BlogSerializer
pagination_class = BlogPagination
lookup_field = 'blog_slug'
И вы можете написать свои собственные классы разрешений, чтобы передать его. и пользователь получит доступ к этому представлению, только если у него будут все разрешения.
Надеюсь, это поможет вам :)