【发布时间】:2017-04-13 22:56:40
【问题描述】:
我已经阅读了几个 StackOverflow 线程,但没有找到任何令人满意的解决方案。 我想要几个自定义权限,它们或多或少复杂(从 ReadOnly 到 limit by-user ...)。
让我们从我现在拥有的开始:
- 基类,只读
- 我的设置
- 用户的视图集。
- 还有一个 staff_user,让我们折叠一切
我的基类看起来像:
class ReadOnly(permissions.BasePermission):
"""
Only, always, ever allow read-only access.
"""
def has_permission(self, request, view):
if request.method in permissions.SAFE_METHODS:
return True
return False
并因此被示例用户的视图集内化
class UserViewSet(viewsets.ModelViewSet):
"""
Retrieve the user associated with your session and allow all methods.
"""
serializer_class = UserSerializer
permission_classes = (ReadOnly,)
def get_queryset(self):
return User.objects.filter(id=self.request.user.id) # This should return an empty queryset when not logged in
并且适当的后备默认权限是
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
'api.permissions.ReadOnly'
]
}
当我现在访问用户页面并以员工身份登录时,我可以通过 POST 轻松创建用户,这同样适用于我的所有其他视图集。这里发生了什么?
【问题讨论】:
-
您在此处粘贴的代码确实工作正常。
标签: python-3.x permissions django-rest-framework