2014-03-05 181 views
4

使用在ModelViewSet不同的操作不同的身份驗證我有以下ModelViewSet在Django的REST框架

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視圖。

回答

6

我想創建方法(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) 

,也許您的其他權限類過類似的東西。