20210617 장고 프로젝트 리뷰

표지

인스타킬로그램 프로젝트

개요

  • 인스타그램 주요 기능을 구현한 웹어플리케이션
    • 회원가입, 로그인, 포스팅, 코멘트, 좋아요, 팔로우
    • 내가 팔로우하는 사람의 게시물을 타임라인에 노출
    • url로 접근하지 못하도록 login required mixin 활용
  • AJAX를 활용한 뷰 변경
    • 좋아요와 팔로우, 코멘트를 submit할 때 리렌더링 없이 서버에 데이터 반영
  • 게시물을 올린 시점과 현 시점의 차이를 ‘~분 전’ 등으로 표현

목표

  • Git과 Gitflow 사용, 커밋 기록을 적절하고 능숙하게 남길 수 있다.
  • Django Framework로 Authentication과 CRUD 기능을 구현할 수 있다.
  • Service Layer 기반으로 CBV을 설계하여 프로그램을 만들 수 있다.

과정

기본 모델 짜기

모델 다이어그램

  • 구현할 기능에 맞춰 기본적인 모델을 설계하고 시작했더니 나중에 손볼 일이 많지 않아 다행이었다(손으로 하나하나 그렸더니 장고샘이 다소 당황하셨다).

템플릿 설계하기

  • 이미 있는 서비스를 따라하는 거라서 어렵진 않았지만 훨씬 구린 하위호환 디자인이라 비교된다는 건 함정…

urls.py, views.py, services.py를 오가며 노동하기

  • 열심히 짜고 디버깅하고 삽질과 삽질과 삽질의 반복

기타

  • JWT 공부해서 구현하려 했지만 실패
  • AJAX 공부해서 구현하기는 성공 (pk값을 템플릿에서 보내줬을 때 나오는 detail 페이지에서만 가능한 상황. 나중에 javascript로 pk에 해당하는 데이터값을 넘겨주는 작업을 해줘야겠다.)

결과물 시연

셀프 피드백

자원관리의 중요성

  • 아직 배울 게 많은 나로서는 불가항력적인 부분이지만 초반 4-5일을 꼬박 JWT 공부에만 쏟았는데도 구현하지 못하는 데에서 오는 스트레스가 컸다.
  • 앞으로는 어느 순간까지 해보고 이해가 안 가거나 질문이 생기는 부분을 선생님께 빨리 물어본 후 포기할지 말지를 결정해야 할 것 같다.

JWT 구현 실패

  • simpleJWT나 dj-rest-auth를 사용한 사례를 엄청 읽고 공부했는데, 이것들을 사용하면 장고 sessionID 방식과 크게 다르지 않다는 선생님의 말을 들어서 깔끔히 포기했다.
  • 나중에 AJAX 하면서 csrf 토큰을 보내는 부분이 나와서 시간만 있었으면 JWT도 구현해봤을법하다. 다른 프로젝트에서 꼭 구현해봐야겠다.

GIT 및 기타

  • 이제 commit은 그래도 중간중간 남기는 것엔 성공
  • 다만 git flow에서 각 branch에 적절한 작업을 하지는 않았다.
  • 선생님이 추천한 github project와 칸반보드 사용도 못해서 아쉽다.

느낀 점

  • 조급한 마음을 내려놓고 시간관리를 잘 하는 것이 정말 중요하다고 느꼈다.
  • 지난 번 보다는 미리 설계를 하면서 작업을 해서 시행착오가 크지 않아서 뿌듯
    앱 설계