2013-06-19 10 views

Odpowiedz

2

By default permissions are unrestricted. W swoim settings.py można określić inny zestaw wartości domyślnych, do których użytkownicy muszą być uwierzytelnieni i mają poprawne uprawnienia modelu Django. Konieczne będzie określenie atrybutu model w klasie widoku, aby zastosować efekt DjangoModelPermissions.

# settings.py 
REST_FRAMEWORK = { 
    'DEFAULT_PERMISSION_CLASSES': (
     'rest_framework.permissions.IsAuthenticated', 
     'rest_framework.permissions.DjangoModelPermissions' 
    ) 
} 

# views.py 
class DocumentList(APIView): 
    model = Document 
    ... 

DjangoModelPermissions pozwolenie mapa can be found in the source.

  • GET, HEAD opcje i nie wymagają zezwolenia, ale ponieważ mamy określony IsAuthenticated my wciąż wymagając mapy
  • POST, aby dodać
  • PUT i poprawka mapy, aby zmienić
  • DELETE do mapy usuń
0

Oto co zrobiłem. Referencje od documentation

Created klasy uprawnień dla projektu

projekt/permissions.py

from rest_framework import permissions 

class IsAuthenticatedOrReadOnly(permissions.BasePermission): 

    def has_object_permission(self, request, view, obj): 
     # Read permission - always allow for GET request 
     if request.method in permissions.SAFE_METHODS: 
      return True 

     # Write permissions - only if authenticated 
     return request.user and request.user.is_authenticated() 

teraz skorzystać z tej PermissionClass w widoku

@permission_classes((IsAuthenticatedOrReadOnly,)) 
class ShopViewSet(viewsets.ModelViewSet): 
    queryset = Shop.objects.all() 
    serializer_class = ShopSerializer