#python #django #django-rest-framework #django-permissions
#python #django #django-rest-framework #django-разрешения
Вопрос:
Я создал пользовательское разрешение django rest, и в целях тестирования я убедился has_object_permission
и has_permission
повторил False
.
from rest_framework import permissions
class IsWorker(permissions.BasePermission):
message = "Login with Supplier Account"
def has_object_permission(self, request, view, obj):
return False
def has_permission(self, request, view):
return False
Почему это представление работает не так, как ожидалось?
from packages.models import Package
from .serializers import WorkerPackageSerializer
from rest_framework.permissions import IsAuthenticated
from api.permissions import IsWorker
class WorkerPackageDetailViewSet(generics.RetrieveUpdateDestroyAPIView):
serializer_class = WorkerPackageSerializer
permission_classes = (IsAuthenticated, IsWorker)
lookup_field = "id"
def get_queryset(self):
return Package.objects.all()
Ожидания:
Я думал, что он вернет forbidden
ошибку с сообщением Login with Supplier Account
, но если пользователь не аутентифицирован, он возвращает ошибку, не прошедшую проверку подлинности, и если пользователь аутентифицирован, он возвращает данные без каких-либо ошибок.
Комментарии:
1. Я понял, что проблема связана с моими URL-адресами. в противном случае все работает нормально. Я вызвал неправильные представления в своих маршрутах