django-rest-framework:通用视图和基于方法的权限
django-rest-framework: generic view and method-based permission
是否可以将身份验证仅应用于通用视图的一种方法?我有一个通用的 ListCreateAPIView
,我想对 get
方法应用身份验证,并且只在 IsAuthenticated
时授予权限,但让 post
方法在没有身份验证的情况下响应?
在基于函数的视图中,这可以通过为每个方法添加装饰器来轻松完成。但我不知道如何使用基于 class 的视图。
一种方法是编写自定义权限:
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, )
是否可以将身份验证仅应用于通用视图的一种方法?我有一个通用的 ListCreateAPIView
,我想对 get
方法应用身份验证,并且只在 IsAuthenticated
时授予权限,但让 post
方法在没有身份验证的情况下响应?
在基于函数的视图中,这可以通过为每个方法添加装饰器来轻松完成。但我不知道如何使用基于 class 的视图。
一种方法是编写自定义权限:
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, )