我正在使用 Django 2.1 和 djangorestframework 3.9.2。我希望能够通过 Django 管理界面控制对 Django 模型对象的 REST 操作的访问,最好使用用户权限。例如,只有对模型对象 Foo 具有读取权限的用户才应该能够在我的 REST API 中看到 Foo。
I read the docs https://www.django-rest-framework.org/api-guide/permissions/看来我也许可以用Django模型权限 https://www.django-rest-framework.org/api-guide/permissions/#djangomodelpermissions or Django对象权限 https://www.django-rest-framework.org/api-guide/permissions/#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)
建议?