是否可以仅对一种通用视图方法应用身份验证?我有一个通用ListCreateAPIView
,我希望将身份验证应用于get
方法,并且仅在IsAuthenticated
时授予权限,但让post
方法无需身份验证即可响应?
在基于函数的视图中,可以通过向每个方法添加装饰器来轻松完成。但我不知道如何使用基于类的视图。
答案 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, )