【发布时间】:2020-05-02 10:13:23
【问题描述】:
在 django 管理界面中,可以为每个单独的模型指定权限。示例模型 Customer 的权限选项是:
- 可以添加客户
- 可以更换客户
- 可以删除客户
- 可以查看客户
但是,这些权限似乎不适用于 REST Framework API 视图 (rest_framework.viewsets.ModelViewSet),为 Customer 实现如下:
class CustomerViewSet(viewsets.ModelViewSet):
queryset = Customer.objects.all()
serializer_class = CustomerSerializer
class CustomerSerializer(serializers.ModelSerializer):
class Meta:
model = Customer
fields = '__all__'
我认为通过将 DEFAULT_PERMISSION_CLASSES 设置为 DjangoModelPermissions 可以反映这些权限,但事实并非如此:
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.DjangoModelPermissions',
),
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_simplejwt.authentication.JWTAuthentication',
'rest_framework.authentication.SessionAuthentication',
),
}
管理员中定义的权限是否应该在这些设置中也适用于视图,不应该,和/或有什么方法可以做到这一点?好处是系统管理员可以轻松地在管理界面中定义组,并针对他们的问题区域定制他们的权限,因此能够以这种方式定义权限是非常可取的。我见过许多其他实现权限的方法,但它们需要我在 python 中的视图定义上看到很多自定义。
版本:
- Django 2.2.9
- djangorestframework 3.11.0
- djangorestframework-simplejwt 4.4.0
【问题讨论】:
标签: django django-rest-framework