django-rest-framework:通用视图和基于方法的权限

时间:2015-01-28 09:02:02

标签: python django-rest-framework

是否可以仅对一种通用视图方法应用身份验证?我有一个通用ListCreateAPIView,我希望将身份验证应用于get方法,并且仅在IsAuthenticated时授予权限,但让post方法无需身份验证即可响应?

在基于函数的视图中,可以通过向每个方法添加装饰器来轻松完成。但我不知道如何使用基于类的视图。

1 个答案:

答案 0 :(得分:3)

一种方法是编写自定义权限:

from rest_framework.permissions import IsAuthenticated
from rest_framework import generics

class IsAuthenticatedNotPost(IsAuthenticated):
    def has_permission(self, request, view):
        if request.method == 'POST':
            return True
        return super(IsAuthenticatedNotPost, self).has_permission(request, view)

class SomeView(generics.ListCreateAPIView):
    permission_classes = (IsAuthenticatedNotPost, )