[프로젝트] SNS 개인과제 회고

Error maze·2022년 7월 31일
0

project

목록 보기
4/4

7.20 ~ 7.27 ~ 고도화

5일 간의 다섯번째과제, sns 과제가 끝났다.
그동안 팀으로 하던 과제를 이번에는 개인과제로 받았다.
개발환경세팅부터 혼자서 해야했다.
사실 개인과제였지만 팀원분들의 도움을 많이 받으면서 진행했다.
마지막까지 감사합니다.

😬 Problems I faced

첫번째 문제 : 모델링

가장 먼저 직면한 문제는 모델링이었다. ERD로 모델링의 각을 잡은 후 진행하였으나 기능을 하나씩 구현하다보니 필드를 변경하고 함수를 추가해야하는 문제가 빈번하게 발생했었다.
해시태그와 좋아요를 ManyToManyField로 변경했다.

좋아요는 IntegerField로 설정한뒤 default로 0으로 설정한 후 증가시켜가면 된다고 생각했는데, 이렇게 되면 좋아요 취소를 구현하는 것이 어려웠다.
request.user가 좋아요 눌렀다면 -1, 누른 적이 없다면 +1 하여 if문으로 구현할 수 있을 줄 알았는데
팀원분의 조언에 힘입어 ManyToMany로 변경하였다.

해시태그는 CharField에서 입력받은 값을 ,을 기준으로 split하여 구현하려고 했는데, 확장성이 부족하다는 팀원님의 말씀에 ManyToMany로 변경하였다.

두번째 문제 : 해시태그 필터링

해시태그를 django-filter로 구현하고 싶었다.
필터링은 간단히 구현할 수 있었다.
문제는 url을 list?hashtags=해시태그이름로 설정하고 싶은데
list?hashtags=해시태그아이디 처럼 해시태그의 아이디값으로 설정되어 골머리를 앓았다.
문제 해결은 stackoverflow에서 질문하여 해결했다.

https://stackoverflow.com/questions/73103673/how-to-customize-showing-query-parameter-with-drf-filtering-manytomanyfield

django-filter의 FilterSet을 상속받아 새로운 HashtagFilter를 생성하였다.

세번째 문제 : 배포

nginx, mysql, django프로젝트를 docker-compose를 사용하여 배포하였다.
배포에는 성공했지만 static 파일이 적용이 안 되는 문제가 발생하였다.
nginx와 docker-compose파일, settings파일의 static경로를 잘못 설정한 줄 알았으나, 진짜 문제는 port에 있었다.
ec2 서버도 8000번 포트를 열어놓고 계속 접속하고 있는게 문제였고, 80번 포트로 접속하니 정상적으로 static 파일도 적용이 되었다.

8000번 포트는 gunicorn과 django가 소통하는 포트이고,
user - ec2 - nginx 는 80포트로 소통한다고 보면 된다.

😊 What I learned

  • ManyToManyField를 이해하고 사용할 수 있다.
  • ManyToManyField의 경우 생성, 수정할 때 어떻게 접근해야하는지에 대해 배웠다.
  • simple jwt를 사용한 jwt인증방식 로그인을 구현했다.
  • django-filter에서 FilterSet을 상속받아 filter를 custom 하는 방식에 대해 배웠다.
  • django서버, gunicorn, nignx 가 어떻게 request, response하는지 배우고 이해했다.

🤗 I'll try later

  • django-filter를 사용하지 않고 Q()를 사용하여 정렬, 필터링, 검색을 구현해봐야겠다.
  • 이번에는 프론트엔드 단에서 로그아웃을 처리한다해서 냅뒀지만 다음에는 simple jwt의 blacklist로 로그아웃을 구현해봐야겠다.
  • network를 생성하여 배포해보고 싶다.
profile
에러의 지옥 속 막다른 길 (ง •̀_•́)ง

0개의 댓글