반응형
스파르타 코딩클럽 내일배움캠프 AI 웹개발자양성과정 3회차
2022.11.23. 59일차 - TIL
1. random 모듈
원격강의에서 제공하는 유명 화가 화풍은 총 11개. 화풍을 사용자들이 직접 선택해서 올릴 수도 있겠지만 우리는 다양한 화풍이 랜덤으로 나오는게 재밌겠다고 생각해서 랜덤 모듈을 사용했다.
paints = {
1: 'composition.t7',
2: 'la_muse.t7',
3: 'starry_night.t7',
4: 'the_wave.t7',
5: 'candy.t7',
6: 'feathers.t7',
7: 'la_muse.t7',
8: 'mosaic.t7',
9: 'starry_night.t7',
10: 'the_scream.t7',
11: 'udnie.t7',
}
# 1~11까지 랜덤으로 선택
num = random.randrange(1, 12)
# OpenCV의 dnn 모듈 사용. 선택된 딥러닝 모델 로드하기
net = cv2.dnn.readNetFromTorch(paints[num])
이렇게 코드를 작성하면 업로드한 이미지에 11개 화풍 중 1개가 랜덤하게 적용되어 이미지 처리가 된다.
2. 접근 권한 설정
1) view에 접근 할 수 있는 요청을 drf의 permission_classes를 활용해 관리 할 수 있다.
아래 이외에도 다양한 permission class들이 존재한다.
- permissions.AllowAny : 모든 사용자를 대상으로 접근 허용
- permissions.IsAuthenticated : 로그인 된 사용자를 대상으로 접근 허용
- permissions.AllowAny : 모든 사용자를 대상으로 접근 허용
2) permission class 커스텀하기
- 가입일이 1주일 이상 된 사용자만 접근 가능하도록 설정
from rest_framework.permissions import BasePermission
from datetime import timedelta
from django.utils import timezone
class RegistedMoreThanAWeekUser(BasePermission):
message = '가입 후 1주일 이상 지난 사용자만 사용하실 수 있습니다.'
def has_permission(self, request, view):
return bool(request.user and request.user.join_date < (timezone.now() - timedelta(days=7)))
- admin은 모든 권한이 있고, 인증 된 사용자는 조회만 가능하도록 설정
from rest_framework.permissions import BasePermission
from rest_framework.exceptions import APIException
from rest_framework import status
class GenericAPIException(APIException):
def __init__(self, status_code, detail=None, code=None):
self.status_code=status_code
super().__init__(detail=detail, code=code)
class IsAdminOrIsAuthenticatedReadOnly(BasePermission):
"""
admin 사용자는 모두 가능, 로그인 사용자는 조회만 가능
"""
SAFE_METHODS = ('GET', )
message = '접근 권한이 없습니다.'
def has_permission(self, request, view):
user = request.user
if not user.is_authenticated:
response ={
"detail": "서비스를 이용하기 위해 로그인 해주세요.",
}
raise GenericAPIException(status_code=status.HTTP_401_UNAUTHORIZED, detail=response)
if user.is_authenticated and user.is_admin:
return True
if user.is_authenticated and request.method in self.SAFE_METHODS:
return True
return False
게시글 이미지 업로드 후 변환 이미지 미리보기 변경 안됨
북마크 프론트에 표기 오류
반응형
'개발일지 > AI 캠프' 카테고리의 다른 글
내일배움캠프 AI - 61일차 TIL, 2022.11.25 (0) | 2022.11.28 |
---|---|
내일배움캠프 AI - 60일차 TIL, 2022.11.24 (0) | 2022.11.28 |
내일배움캠프 AI - 58일차 TIL, 2022.11.22 (0) | 2022.11.28 |
내일배움캠프 AI - 57일차 TIL, 2022.11.21 (0) | 2022.11.28 |
내일배움캠프 AI - 12주차 WIL (0) | 2022.11.19 |