TIL#61 위코드 한달 후기 및 인스타그램 클론(Backend)

Dasom·2020년 9월 11일
0

project

목록 보기
2/19

위코드에서의 한달을 돌아보며🗓

위코드 사전스터디⏱

7월 중순부터 사전스터디를 시작하였고 회사는 7월말일까지 하고 퇴사를 하였기 때문에 8월부터는 집에서 파이썬만 계속 공부했다. 중간중간 사전스터디 모임을 나가 노션을 통해 냈던 예제들을 풀어보고 설명하며 서로의 코드를 비교해보고 실력이 조금씩 늘면서 코딩하는게 너무 즐거워졌다. 학창시절에 수학을 제일 좋아했었기 때문인지 코딩하는 게 수학문제를 푸는 것 같고 어려운 문제를 몇시간에 걸쳐 해결하였을 때는 그 성취감에 너무 즐겁기도 했다.

위코드에서의 한달🗒

사전스터디 기간이 끝나고 위코드가 개강을 하여 12기생이 되었고 위코드 프리코스 과정 1달이 지나갔다. 사전스터디 기간까지 합치면 두 달이 넘는 기간동안 개발 공부를 한 것이다. 위코드에 등록하기 전 상담 때 필수 공부시간인 오전10시부터 저녁7시 그리고 다들 그 이후로도 남아서 막차가 끊기기 전까지 코딩을 하신다는 말씀을 들었었는데, 그때는 필수 공부시간조차 너무 길게 느껴졌고 과연 내가 할 수 있을까 라는 생각도 했었다. 12기가 개강을 하고 위코드를 시작하면서 저녁7시 이후에도 집에 가지 않는 나 자신이 놀랍고 한편으로는 뿌듯하게 느껴지기도 했다. 태어나서 처음으로 무언가를 재미있게 열심히 해보다 보니 시간이 가는지도 모르고 공부하게 되었다😅

1달동안 Python & Django를 배우면서 인스타그램 클론인 위스타그램의 회원가입, 로그인 엔드포인트를 구현하였다. 처음에 장고 튜토리얼을 시작하면서 정말 막막했었고 보이지 않는 벽이 있는 것 같았다😓 그래도 처음 배우는 거라 어려울수밖에 없다 생각하였고 다들 똑같은 마음이었을 테니 버티고 열심히 해보자! 라는 생각으로 책도 사고 구글링도 하면서 공부를 했다.

4주차가 지나간 현재 회원가입과 로그인 엔드포인트를 구현완료하였고 아주 조금 감이 잡힌 듯 하다. 하지만 아직도 갈길이 멀다...😭 처음과 비교하면 물론 늘었지만 아직도 병아리 수준이기 때문에 더욱 열심히 해야겠다는 의지가 불타오른다👍🏼

프리코스 한달을 보내면서 처음부터 이것저것 배워가는 과정이 너무 재미있었고 더 잘하고 싶고 더 많이 알고 싶다는 욕심이 생겼다:) 다음주에 시작하는 1차 프로젝트도 걱정보다는 새로운 것을 배울 수 있다는 기대와 실력이 더 늘 것이라는 설렘에 너무 기다려진다🥰

4주차를 마무리하면서 인스타그램 클론 미니 프로젝트였던 위스타그램 회원가입 및 로그인 엔드포인트를 다시 한번 정리하려 한다🤗


인스타그램 클론 Westagram💻

Django

장고는 MVT(Model-View-Template)패턴을 사용한다. 웹 프로그래밍시 일반적으로 이용하는 MVC(Model-View-Controller)패턴의 개념을 그대로 받아들이고 용어만 다르게 사용하고 있다. Model은 데이터 베이스에 저장되는 데이터를 의미하고 View는 실질적으로 프로그램 로직이 동작하여 데이터를 가져오고 적절하게 처리한 결과를 템플릿에 전달하는 역할을 수행하며, Template은 사용자에게 보여지는 UI부분을 수행한다. 나는 백엔드를 선택했기 때문에 Template은 배우지 않고 Model과 View를 배웠다.

MVT패턴에 따라 처리하는 과정

  • 클라이언트로부터 요청을 받으면 URLconf를 이용하여 URL 분석
  • URL 분석결과를 통해 해당 URL에 대한 처리를 담당할 View 를 결정
  • View는 자신의 로직을 실행하면서 만일 데이터베이스 처리가 필요하면 Model을 통해 처리하고 그 결과를 반환받음
  • View는 자신의 로직 처리가 끝나면 Template을 사용하여 클라이언트에 전송할 HTML파일을 생성
  • VIew는 최종결과로 HTML파일을 클라이언트에게 보내 응답

❗️ 위코드 백엔드과정에서는 Template을 배우지 않기 때문에 View에서 바로 클라이언트로 응답


Model


회원가입 및 로그인을 위한 Users 테이블을 만들었다. 모델은 사용될 데이터에 대한 정의를 담고 있는 클래스이다. ORM(Object-Relational Mapping) 기법을 사용하여 애플리케이션에서 사용할 데이터베이스를 클래스로 매핑해서 코딩한다. 클래스 하나가 데이터베이스의 테이블 하나이다. 클래스의 변수의 타입은 장고에서 미리 정의된 필드 클래스를 사용한다.

View

회원가입 및 로그인은 클라이언트에서 post 방식으로 body에 이용자의 정보(email, password)가 담겨서 request가 들어온다.

회원가입 및 유효성 검사, 암호화

  • 회원가입시 아이디(email)가 이미 존재할 경우 error 발생
  • 아이디 형식('@', '.'이 들어가야 함)이 맞지 않을 경우 error 발생
  • 비밀번호 최소길이를 상수로 선언. 최소길이보다 짧을 시 error 발생
  • email이나 password의 key가 잘못되었을 때 keyerror 발생
  • bcrypt를 이용해 비밀번호를 암호화 한 후 db에 저장

로그인 및 유효성 검사, 토큰 생성

  • 입력된 아이디(email)가 존재하지 않을 경우 error 발생
  • 새로 입력된 비밀번호와 입력된 email에 등록된 비밀번호를 db에서 가져와 일치하는지 검사하여 일치하지 않을 시 error 발생
  • key가 잘못 들어왔을 때 keyerror 발생
  • PyJWT 를 이용하여 access token 생성하여 반환

어떤 개발자가 되고 싶은가🙏🏼

어떠한 개발자가 되고 싶은가... 이 질문은 앞으로 계속해서 스스로에게 해봐야 할 질문일 것 같다. 위코드 은우님께서 말씀하셨던 것 중에 "같이 일하고 싶은 개발자" 라는 말이 너무 마음에 와 닿았다. 개발자는 협업이 매우 중요하기 때문에 소통이 잘되야 한다고 알고 있다. 그래서 다음주부터 진행하는 프로젝트도 너무 기대가 되고 한단계 더 성장할 수 있을 거라는 생각에 설렌다🙂

앞으로 1년 3년 5년 10년.. 이 지났을 때 과거를 돌아보면서 "나 정말 개발 열심히 하고 살았구나" "잘해왔구나" "앞으로도 더 열심히 하자" 라는 생각을 가지고 싶다. 지금은 아직 병아리지만 계속 성장해 나가면서 개발자의 길을 걷고 싶다. 늦게 찾게 된 나의 길인 만큼 더 많이 공부하고 노력해서 계속 성장하는 개발자가 되고 싶다.

profile
개발자꿈나무🌲

0개의 댓글