Я пытаюсь установить пользовательские разрешения для класса, который расширяет viewets.ModelViewSet, и кажется, что мои разрешения не оцениваются. Вот мое мнение:Django REST Framework - пользовательские разрешения, не оценивающие
from rest_framework import viewsets
from rest_framework.authentication import SessionAuthentication, BasicAuthentication
from rest_framework.permissions import IsAuthenticated
import models
import serializers
from permissions import IsAdminOrAuthenticatedReadOnly
class KPIViewSet(viewsets.ModelViewSet):
'''
API endpoint that allows KPI metadata to be viewed or edited
'''
authentication_classes = (BasicAuthentication,)
permission_classes = (IsAdminOrAuthenticatedReadOnly,)
queryset = models.KPI.objects.all()
serializer_class = serializers.KPISerializer
И вот мое разрешение класс:
from rest_framework.permissions import BasePermission, SAFE_METHODS
class IsAdminOrAuthenticatedReadOnly(BasePermission):
def has_permissions(self, request, view):
if request.method in SAFE_METHODS:
return request.user and request.user.is_authenticated()
return request.user and request.user.is_staff()
Проблема я бегу в том, что IsAdminOrAuthenticatedReadOnly кажется, никогда не получить оценку. Я тестировал это, заставляя его всегда возвращать «False» и переключая значение allow_classes на «IsAuthenticated» в представлении. В первом сценарии запрос к конечной точке возвращается, как если бы не было требования проверки подлинности. В дальнейшем аутентификация выполняется, как и ожидалось.
Любые идеи, что мне не хватает?
ugh. вы правы, спасибо –