DRF Custom Permission
Django에서 특정 그룹에 속해있는 유저만 실행할 수 있는 viewset을 만들어봅시다 !!
일단 "NGEE" 라는 그룹이 생성되어 있다고 가정할 때 아래와 같은 permission 클래스를 하나 만들어줍니다.
ngeePermission의 has_permission이 하는 일은 request.user.groups 이름을 가지고 와서 거기에 NGEE가 있는지 없는지를 리턴해줍니다. NGEE 라는 그룹에 속해있다면 True가 리턴될 것이고 반대로 속해있지 않다면 False가 리턴되겠죠?
from rest_framework.permission import BasePermission
class ngeePermission(BasePermission)
def has_permission(self, request, view):
return 'NGEE' in request.user.groups.value_list('name', flat=True)
실제 permission을 적용할 viewset에서는 아래와 같이 적용합니다.
class targetViewSet(viewsets.ViewSet):
...
permission_classes = (ngeePermission, )
...
이제 targetViewSet의 모든 함수들은 ngeePermission을 체크해서 작동하게 됩니다.
조금 더 복잡하게는 list나 retrieve 에는 누구나 사용할 수 있도록 권한을 열어주고 create, delete 등의 함수에는 권한이 있는 사람들만 사용할 수 있도록 하는 것도 가능합니다.
'파이썬(python2.7) > Django&REST' 카테고리의 다른 글
django.core.exceptions.FieldError: Related Field got invalid lookup: icontains (0) | 2019.08.17 |
---|---|
DRF Custom Permission (0) | 2019.08.10 |
Django Test - pytest, reuse, create db, migration 등 간단 소개 (0) | 2019.08.10 |
Django Mysql Warning - utf8mb4 (0) | 2019.07.28 |
Django Render로 넘어온 context 사용하기 (0) | 2019.06.08 |
Django Ckeditor File Upload Permission (0) | 2019.05.31 |
Favicon Image Add to Django Admin Site (0) | 2019.05.31 |
DRF - list_route, detail_route >> @action 변경 (0) | 2019.05.26 |