Я использую Django 2.1 и djangorestframework 3.9.2. Я хотел бы иметь возможность контролировать доступ к операциям REST на объектах модели Django через интерфейс администратора Django, в идеале используя разрешения пользователя. Например, только пользователи, которые имеют разрешения на чтение для объекта модели Foo, могут видеть Foo в моем REST API.
Я прочитал документы и, возможно, я мог бы использовать DjangoModelPermissions или DjangoObjectPermissions .
Однако, когда я очищаю все пользовательские разрешения в БД и устанавливаю для DEFAULT_PERMISSIONS_CLASS либо DjangoModelPermissions, либо DjangoObjectPermissions, я все еще могу видеть вещи в REST API. Это означает, что отсутствие разрешений не мешает мне видеть объекты, как я и надеялся.
Пример настроек:
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.DjangoModelPermissions',
),
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
'rest_framework.authentication.SessionAuthentication',
),
}
Пример представления объекта:
from rest_framework import routers, serializers, viewsets
from .models import Example
class ExampleSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Example
fields = '__all__'
class ExampleViewSet(viewsets.ModelViewSet):
queryset = Example.objects.all()
serializer_class = ExampleSerializer
router = routers.DefaultRouter()
router.register(r'examples', ExampleViewSet)
Предложения