본문 바로가기

About coding/Today I learned

2023년 05월 22일 TIL [#drf 팀 프로젝트 시작 #drf 토큰방식 로그인 구현]

 

 


오늘의 학습 계획

_팀프로젝트 참여

_내가 맡은 부분 (회원가입/탈퇴, 로그인/로그아웃) 성공적으로 구현하기

_소셜로그인 OAuth 공부해서 구현하기


기록하고 싶은 학습내용

_다시 새로운 팀워크가 시작되었다!

이번 팀에서 만들 주제는 비타민 전자상거래 쇼핑몰!

이번 팀의 이름은 어려워도 해보자! 해서 Ah molrang(아몰랑!) 이고

쇼핑몰 이름은 DON'T KNOW VITAMIN 이다. ㅎㅎㅎㅎ

 

▼이번 팀의 와이어프레임

회원가입, 로그인, 마이페이지, 상품등록 화면
상품목록, 상품상세, 장바구니, 리뷰전체, 리뷰등록, 리뷰상세 화면

 

구현할 기능

더보기
  • 회원 기능 JWT (나)
    • 회원가입, 회원탈퇴, 로그인, 로그아웃
    • 아이디, 비밀번호, 이메일
    • 이메일인중? 소셜로그인?
    • 소셜로그인으로 해볼게요 >_<
  • 장바구니 (♥님)(일단 하다가 조수 필요)
    • 상품엔티티에 들어가는 데이터 그대로 쓴다
    • 상품 썸네일 이미지, 상품 제목, 가격이 목록으로 나타남
    • 상품들의 가격을 합쳐서 계산해주는 기능
    • +할 수 있으면 체크한 것만 합쳐서 계산해주는 기능
  • 찜 (♥님)(+feat )
    • 토글 형식으로 찜 추가 해제
    • 팔로우 팔로잉이랑 비슷한 거
    • 마이페이지에 찜목록 전달 유념
  • 리뷰와 별점, 리뷰에 대한 댓글 (♥님)(조수 필요)
    • 게시글 CRUD 구현과 비슷함
    • 아이디, 사진, 제목, 구매평, +별점(5점만점)
    • 리뷰에 대한 댓글 가능해야 함. (아이디, 한 줄 글)
    • 많아지는 게시글을 나눠보기 위한 페이지 기능(pagination)
  • 발전된 어드민 페이지 (♥님)(+feat , ♥님)
    • 권한 분리 (권한이 있는 판매자 측만 CRUD 가능)
    • 게시글 CRUD와 비슷하지만 리퀘스트가 없다. 어드민에서 조작.
    • 상품엔티티: 사진, 소개, 가격, 재고 수량
    • 어드민에서 상품 CRUD 가능해야 함

## 어드민을 사용하는 게 맞을까? / 웹페이지에서 사용하는 게 맞을까? / 이창호 튜터님이나 고수한테 물어보자##

  • 상품 상세페이지 (♥님)(조수필요)
    • 상품 사진
    • 상품 가격
    • 상품 리뷰
    • 상품 소개 (+배송비, 배송기간, 상품설명)
    • 품절 시 품절 알림
  • 상품 목록 페이지 (웹사이트 메인페이지 index.html)(♥님)(조수필요)
    • 최신순정렬
    • 상품 썸네일, 상품 제목, 상품 가격
    • 로그인 안해도 다 볼 수 있게
    • 품절 표시
  • 마이 페이지 (♥님)(+feat: 나)
    • 내 게시물 보기 → 모든 유저
    • 다대다
    • 프로필 수정 기능 → 나만
    • 내가 찜한 상품들 볼 수 있게
    • 내가 등록한 리뷰 볼 수 있게
  • ai기능으로 텍스트 이미지 검색  x (추후에 구현 해봅시다!)
  • 결제서비스 구현 x (추후에 구현 해봅시다!)

 

API 명세

 

약간 아쉬운 점은 결제서비스 구현문제인데, PG사 서비스 자체가 유료이기도 하고, 프로젝트를 위해 주어진 시간이 5일 밖에 없어서 결제서비스는 나중에 해보기로 했다. 팀스파르타 캠프 끝나고 맘 맞는 팀원들이랑 다시 재도전 해보면 재미있을 것 같다 ㅎㅎ

 

아무튼 그래서,

_회원가입 기능 공부 중 깨달은 점 NOTATION:

사용자의 로그인 정보를 기록해놓기 위해서는 장고가 추구하는 stateless 통신에 대해서 얼마간 양보를 해야한다.

그리고 cookie/session 방식 로그인에서는 쿠키가 Dev Tool > application > storage > cookie 에서 확인할 수 있었는데,

token 방식에서는 마찬가지로 Dev Tool > application > storage > 이나 cookie가 아닌 local storage 공간에서 토큰을 저장/관리 한다. ㅇㅇ

 

쿠키가 주민등록번호를 말하고 그걸 전산에서 확인해서 일일이 이 사람의 신원을 확인하는 방식이라면,

토큰은 그냥 주민등록증을 슥 보여주고 거기 찍힌 도장으로만 통과하는 원리이다.

 

_JWT: Jason Web Token.

 

 


오류픽스

 

1. users 에서 drf 독스에 나와있는 custom user 세팅하는 법을 강의대로 따라하던 중,

urls.py에서 path 긁어다 붙여넣고, 천장에 import도 했는데 아래와 같은 오류가 뜸.

원래라면

views.py에 아무것도 안했어도 위 import 만으로도 포스트맨에서 아래와 같은 결과가 나와야 하는데,

안나오고 노란색 에러가 뜬것이당.

 

해결!:

팀원분이 settings.py에 나 코딩하기 편하라고 배려해주시느라 미리 이전에 썼던 유저스 코드들을 남겨주셨는데,

거기에 기본값을 설정해놓는 코드가 있어서 serializer가 없는데 serializer를 부르니 에러가 난 것이었다.

ㅎㅎㅎㅎㅎ 스윗!