我在玩djangorestframework
,我的目標是在我的視圖上使用DjangoModelPermissions
,它對GET
請求做出反應。官方文檔說:Django Rest Framework在ListAPIView上使用DjangoModelPermissions
默認行爲也可以覆蓋以支持自定義模型 權限。例如,您可能需要爲
GET
請求包含view
模型 權限。
所以我修改我的模型如下所示:
class User(AbstractUser):
display_name = models.CharField(_('Display Name'), blank=True, max_length=255)
class Meta:
permissions = (
("view_user", "Can view users"),
)
def __str__(self):
return self.username
和視圖:
class UserListAPIView(ListAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
permission_classes = (permissions.DjangoModelPermissions,)
設置:
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.TokenAuthentication',
),
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.DjangoModelPermissions'
]
}
問題是,我實施的UserListAPIView
成功返回一個不屬於Group
的用戶的所有對象的列表,既沒有任何自定義User Permission
。在我看來,DjangoModelPermissions
不起作用。
class CustomDjangoModelPermission(permissions.DjangoModelPermissions):
def __init__(self):
self.perms_map['GET'] = ['%(app_label)s.view_%(model_name)s']
哦,我想我必須自己實現它:https://github.com/encode/django-rest-framework/blob/master/rest_framework/permissions.py#L91任何幫助在這裏將不勝感激。 –