我有以下ModelViewSet
class UserViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows users to be viewed or edited.
"""
queryset = User.objects.all()
serializer_class = UserSerializer
authentication_classes = (TokenAuthentication,)
permission_classes = (permissions.IsAuthenticated, MyUserPermissions)
我希望create method (POST on /users/)
不要求任何身份验证。在这种情况下,如何覆盖authentication_classes?我在谈论ModelViewSet
非通用API视图。
答案 0 :(得分:7)
我希望create方法(POST / users /上的POST)不要求任何身份验证。
实际上这并不是你想要的。您希望用户POST
不需要任何权限,这将导致经过身份验证或未经身份验证的请求成功。
我建议覆盖您的权限类,以便它们始终允许POST
个请求。有关详细信息,请点击custom permissions documentation。
基本上你会有类似的东西:
class IsAuthenticatedOrCreate(permissions.IsAuthenticated):
def has_permission(self, request, view):
if request.method == 'POST':
return True
return super(IsAuthenticatedOrCreate, self).has_permission(request, view)
也可能类似于你的其他权限类别。