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'

И вы можете написать свои собственные классы разрешений, чтобы передать его. и пользователь получит доступ к этому представлению, только если у него будут все разрешения.

Надеюсь, это поможет вам :)

Вернуться на верх