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와 칸반보드 사용도 못해서 아쉽다.
느낀 점
- 조급한 마음을 내려놓고 시간관리를 잘 하는 것이 정말 중요하다고 느꼈다.
- 지난 번 보다는 미리 설계를 하면서 작업을 해서 시행착오가 크지 않아서 뿌듯
hanana1253문정동에서 코딩하는 하나나입니다.