@slickstars

Как установить permissions на ListCreateAPIView?

Привет, у меня есть класс:
class PostList(generics.ListCreateAPIView):
    permission_classes = (permissions.IsAuthenticated,)
    model = Post
    queryset = Post.objects.all()
    serializer_class = PostSerializer


С помощью него я могу создавать и смотреть все посты, и в urls я могу написать:
url(r'^posts/$', views.PostList.as_view(), name='post-list'),


У меня такой вопрос, как действия List и Create (get, post) установить разные permissions и при этом сохранить возможность обращаться к этим действиям с одного url'а (/posts) используя разные методы GET, POST?
Ведь в PostList(generics.ListCreateAPIView): я могу поставить permission_classes, но тогда permission будет распространяться и на List и на Create действия
  • Вопрос задан
  • 270 просмотров
Решения вопроса 1
@marazmiki
Укротитель питонов
Вот так:
class PostList(generics.ListCreateAPIView):
    def get_permissions(self):
        if self.request.method  == 'GET':
            perms = [GetPermission]
        else:
            perms = [NotGetPermission]
        return [p() for p in perms]
Понятно, что решение красотой не блещет, это, что называется, низкий уровень. Но в основе всех улучшений будет лежать именно этот принцип
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы