DRF 개인과제 해설

손성수·2023년 5월 1일
0

나의 과제 풀이
Todo List Project

pip install djangorestframework-simplejwt
세가지의 요소를 의존성에 의해 한번에 설치할 수 있다.


커스텀 유저는 공식문서 또는 이전에 작성한것을 가져와 복사하여 생성한다.(추천)


데이터 설계

user
id = pk값이므로 자동 생성됨
email = unique 설정
USERNAME_FIELD를 email로 설정
성별 = char, booleanField로 설정 가능

blank=True,default=""
필수 작성 내용이 아니며, 기본값 설정

is_active : 활성화된 계정인지 여부 판단


세션,토큰 로그아웃 인증방식

세션 로그인

  • 주문 번호

: 데이터 정보를 서버에서 관리
조작이 쉬운 장점이 있음
로그아웃은 데이터 베이스에서 주문번호 삭제

jwt 토큰

  • 사용자 정보
  • 발급일자
  • 만료기간
  • 서명 : 유효성 검증

: 데이터 정보를 서버에서 관리하지 않음
티켓을 발급하여 유효성을 검증
데이터 베이스, 서버에 부담이 덜한 장점이 있음
로그아웃 기능은 프론트에서 토큰 자체를 삭제


프로젝트 구성

case 1
is_vaild(raise_exception=True)
에러만 리턴

case 2
if not serializer.is_valid():
	# some code
	return Response(serializer.errors)

유효성 검증 또는 필드 검증(필요없는 데이터인지까지 검증)


비밀번호를 쓰기 전용으로 만듬으로써
데이터 읽어올때 출력되지 않게 방지할 수 있음
write_only , read_only

exclude = ["password"]
읽기,쓰기 모두 제외

비밀번호 복호화 과정 pop 사용 예시



"required" : False
필수 속성값이 아님을 알림


get pk 설정시 알아서 pk값을 찾아서 반영해줌
쿼리셋을 리턴할땐 many=True가 필수 사항


put , patch의 차이점
put 모두 수정
patch 일부 수정

회원 탈퇴시 데이터베이스를 바로 삭제하는것은
올바른 방법이 아님

예시 ) 사용자가 탈퇴후 결제한 내역을 요청할때

따라서 데이터베이스를 삭제하는것이 아닌
비활성화 하는것이 바람직하다.
비활성화된 계정을 추후에 삭제

섬세한 구분

  • 비활성화 계정인지?
  • 탈퇴 계정인지?
    섬세한것을 고려해야 한다.
  • 비활성화 계정은 시간이 자동 저장되지 않으므로 비활성화 시간 저장도 고려해야한다.

from django.utils import timezone

UTC : 세계 협정시
KST : UTC + 9

profile
더 노력하겠습니다

0개의 댓글

관련 채용 정보