[WiselyClone] 1st project - wisely 클론 3일차

Alex of the year 2020 & 2021·2020년 7월 22일
0
post-thumbnail

Wisely 클론 프로젝트를 시작했다

Wisely


면도기를 주력상품으로 내세워 각종 면도 관련 상품(면도날, 셰이빙 젤, 애프터 셰이브)을 판매하며 주로 남성 고객들을 타겟으로 하는 웹 페이지.

Backend적 관점으로 우리가 클론할 내용만 중점으로 분석해보자면 (!)
1) 회원가입, 로그인, 마이페이지 등의 회원 정보 관련 기능
2) 본인의 피부 타입 검사하기, 상품 보기, 상품 색상 선택, 상품 용량(사이즈) 선택 등의 상품 관련 기능
3) 장바구니, 주문하기, 주문 배송 조회, 결제하기 등의 주문 관련 기능
이렇게 크게 세 가지의 축으로 이루어져 있는 웹 페이지이다.

Backend는 어떻게 프로젝트를 시작하는가

0. 장고 초기 세팅

django에서 django-admin startproject [project이름]으로 한 프로젝트를 시작하면, project 기본 설정(init.py, asgi.py, settings.py, urls.py, wsgi.py)을 담고 있는 내가 정한 project 이름을 딴 main 브랜치(깃 이야기하는 것 아님)가 형성된다. 그리고 이 때 이 main 브랜치와 같은 레벨에 manage.py가 생성된다.

여기에 my_settings.py를 만들어 깃에 올라가서는 안되는 중요 정보(DATABASE, SECRET_KEY) 등을 저장하고 requirements.txt파일을 만들어 pip freeze를 작성하면 볼 수 있는(내 장고에 무엇 무엇이 깔려 있는지) 리스트를 모두 저장해준다.

바로 여기까지가 팀장(PM)이 깃헙에 올린 초기 세팅 내용이고,

그 후 그 내용을 내가 내 1차 프로젝트 폴더(나의 경우 10-RonWesely-Backend)에 clone 받아 프로젝트를 시작한다.

현재 한 팀에 Backend는 두 명(팀장, 나)이고 나는 회원가입과 로그인 앱을 구현하는 것을 첫 목표로 잡았다. 그럼 나는 이제 클론 받은 이 자리에서 내가 구현할 앱을 만든다. 회원가입과 로그인 모두 회원 정보에 관련된 기능이기 때문에 나는 내 앱 이름을 users로 했다. 어떻게 이 앱을 만드냐하면,

manage.py가 있는 위치에서 python manage.py startapp [app명]을 입력하면, 이제 그 main 브랜치 아래 내가 생성한 앱 이름으로 또 다른 branch가 생성된다.

위 사진이 초기세팅한 것을 클론받아, 내가 구현해야하는 기능으로 앱을(users) 만들어 놓은 상황이다.

1. 데이터 모델링

위 사진에서 보이는 users 앱 속의 models.py를 구성하기 위해, 그리고 홈페이지의 전반적인 내용을 효과적으로 이해하며 클론(지금은 클론, 이후에는 개발)하기 위해 필요한 것이 데이터 모델링이다. (AQuerytool.com에서 하고 있다.)

사진은 내가 손가는대로 해본 1차 모델링 사진이다.

나는 모델링을 대충 잡아놓고, 실제 장고에 코드를 치면서 뭔가 데이터 아웃라인을 잡아가면 될 줄 알고 그냥 무작정 회원가입 로그인 기능을 구현하기 바빴던 것 같다. 그러나 이 데이터 모델링은 내 생각보다 훨씬 중요했다. 오늘은 1차 데이터 모델링 리뷰 세션이 있었는데, 나보다 더 체계적이고 많이 생각해서 작성한 팀장의 데이터 모델도 많은 것을 수정해야했다.

전체적인 데이터 아웃라인을 잡지 못한 채 프로젝트를 진행하는 것에 많은 갈증을 느껴 팀장과 함께 데이터 모델링 리뷰를 하였다. 지금은 훨씬 더 이해가 된 상황이다. 하지만 아직도 더 좋은 모델링을 많이 보고, 지금 팀장이 해놓은 모델링을 완전히 이해해 볼 필요를 느낀다.

2. 회원가입/로그인 API 구현

views.py에는 데이터를 처음 받아오는 과정에서의 검증 과정을, models.py에는 데이터 어떠한 형태로 받아 저장할 것인지를 구현한 후, python manage.py makemigrations그리고python manage.py migrate` 진행.

<어려운 점>
views.py에 구현하는 로직이 머리에는 있는데, 파이썬으로 어떻게 써야할지 모르겠다.

ex.
이 경우, 휴대폰 번호를 숫자로만 입력한다. 즉 위 사진처럼 스트링형으로 쓰면 휴대폰 번호를 올바르게 쓰라는 메시지가 나옴. 물론! 이 과정을 프론트단에서 한 번 걸러줄 수 있지만, 팀장말에 따르면 이 과정은 Backend에서도 한 번 필터링해주면 좋다고 했다. 그럼 내가 받은 휴대폰 번호가 int형이 맞는지, 그리고 int형이 아니라면 에러를 보낼건데 어떤 식으로 보낼지, 그리고 string형이라면 어떤 식으로 처리할 것인지 try-except 로직을 이용해서 짜야한다.

profile
Backend 개발 학습 아카이빙 블로그입니다. (현재는 작성하지 않습니다.)

0개의 댓글