728x90
django에서 user를 이용하여 view에 접근 권한을 주려면 여러방법이 있다
user마다 개인권한을 주는 방법이 있지만 그룹으로 권한을 주고 싶을 땐 django의 기본 셋팅되어있는 user group를 이용해 mixin을 만들어 view에 권한을 줄 수 있다
mixin.py 파일 생성
from django.core.exceptions import PermissionDenied
class GroupRequiredMixin(object):
"""
group_required - list of strings, required param
"""
group_required = None
def dispatch(self, request, *args, **kwargs):
if not request.user.is_authenticated():
raise PermissionDenied
else:
user_groups = []
for group in request.user.groups.values_list('name', flat=True):
user_groups.append(group)
if len(set(user_groups).intersection(self.group_required)) <= 0:
raise PermissionDenied
return super(GroupRequiredMixin, self).dispatch(request, *args, **kwargs)
view.py 에 demo 함수
from .mixins import GroupRequiredMixin
from django.views.generic import View
class DemoView(GroupRequiredMixin, View):
group_required = [u'admin', u'manager']
# View code...
사용하려는 demo 함수에 mixin을 상속받아 group_required에 user group을 리스트 형식으로 적어놓으면 된다
user group는 기본 장고어드민에서 생성할 수 있다
728x90
'괴발개발 > Django' 카테고리의 다른 글
내가 자고 있는 순간에도 Django는 일을 한다! django crontab 사용방법 (0) | 2022.12.11 |
---|---|
django order_by 한글 정렬하기 (글자수 무시하고 가나다 순으로만) (0) | 2022.09.27 |
django management 명령어 만들기 (python manage.py) (0) | 2022.07.18 |
[Django] kakao social login allauth로는 안되는 증상 (0) | 2021.08.07 |
[django] duplicate key value violates unique constraint 오류 문제 해결 (0) | 2021.08.03 |