Django - DRF - BasePermission 권한 구성 요소
1. BasePermission - 요청을 차단하고 보기 함수 돈에서 상응하는 권한 인증 방법을 실행합니다
1-1 drAuth.py - 권한 클래스 구현
1-2 보기 함수 - 권한 검증이 필요한 클래스 - permissionclasses
1-3 시퀀스 클래스 - 데이터로 반환되는 시퀀스 - ModelSerializer
1-4 모델 내choices 최적화
2. 권한 인증 설정 - permissionclasses
2-1 부분적 구성
2-2 글로벌 구성 및 부분적 비활성화
3. 원본 코드 분석
1. BasePermission - 요청을 차단하고 보기 함수 돈에서 상응하는 권한 인증 방법을 실행합니다
요약:
1-1 drAuth.py - 권한 클래스 구현
from rest_framework.permissions import BasePermission
class UserPermission(BasePermission):
#
message = ' '
# has_permission
def has_permission(self, request, view):
user_type = request.user.user_type
user_type_name = request.user.get_user_type_display()
print(request.user.name)
print(user_type_name)
if user_type == 2:
return True
else:
return False
1-2 보기 함수 - 권한 검증이 필요한 클래스 - permissionclasses
class Users(APIView):
permission_classes = [drfAuth.UserPermission, ]
def get(self, request, *args, **kwargs):
response = {'status': 100, 'msg': ' '}
ret = models.UserInfo.objects.all()
ser = MySerializer.UserSerializer(ret, many=True)
response['data'] = ser.data
return JsonResponse(response, safe=False)
1-3 시퀀스 클래스 - 데이터로 반환되는 시퀀스 - ModelSerializer
from rest_framework import serializers
from app01 import models
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = models.UserInfo
fields = '__all__'
user_type = serializers.CharField(source='get_user_type_display')
# user_type = serializers.SerializerMethodField()
#
# def get_user_type(self, obj):
# return obj.get_user_type_display()
1-4 모델 내choices 최적화
from django.db import models
class UserInfo(models.Model):
name = models.CharField(max_length=32)
user_choice = ((0, ' '), (1, ' '), (2, ' '),)
user_type = models.IntegerField(choices=user_choice, default=0)
pwd = models.CharField(max_length=32)
2. 권한 인증 설정 - permissionclasses
2-1 부분적 구성
'''
!! : , !!
'''
permission_classes = [drfAuth.UserPermission, ]
2-2 글로벌 구성 및 부분적 비활성화
'''
settings
REST_FRAMEWORK
'''
REST_FRAMEWORK={
'DEFAULT_PERMISSION_CLASSES':['app01.MyAuth.UserPermission',]
}
'''
- permission_classes
-
'''
permission_classes = []
3. 원본 코드 분석
'''
APIView - check_permissions
'''
def get_permissions(self):
return [permission() for permission in self.permission_classes]
def check_permissions(self, request):
"""
Check if the request should be permitted.
Raises an appropriate exception if the request is not permitted.
"""
# permission_classes
for permission in self.get_permissions():
# Flase - message
if not permission.has_permission(request, self):
self.permission_denied(
request, message=getattr(permission, 'message', None)
)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
django rest framework : swagger다음 기사를 시도한 가정. rest framework로 만든 api 목록을 자동으로 생성합니다. swagger module 사용 아래 참조되었습니다. 활성화된 경로 목록이 표시됨 rest_project/setting...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.