[django] westagram code review: mission 1-6

EMMA·2022년 3월 28일
1

westagram 미션 1~6부터 진행하면서, 기록하고 싶은 코멘트/피드백들을 정리했다.


1
User.objects.all() > filter()
User.objects.filter() 로 바로 사용하면 됨
굳이 모든 데이터를 다 불러와서 filter를 추가로 적용할 필요가 없음

2
확장성을 생각할 것
그냥 바로 data['email'] 를 넣는것보다, 변수에 담아서 사용하면 확장성에 용이함

3
에러메세지 등 네이밍/컨벤션 잘 확인할 것

  • 에러 메세지 underbar를 사용하면 통일해서 맞출 것
  • 띄어쓰기 통일
  • 길이가 너무 길면 나눠서 작성해야

에러메세지 내용마다 status 코드 잘 확인할 것
에러메세지는 클라이언트에 전달되면, 어차피 클라이언트 단에서 다시 분류 작업을 하므로 굳이 너무 길거나 message/error message 등 key값을 나눌 필요가 없음

4
변수,상수 등은 무조건 위에 올릴 필요는 없음
파이썬은 위에서부터 아래로 읽기 때문에, 흐름에 맞춰서 작성하면 됨

5
bcrypt, pyjwt 등을 import 할 때 안되면 아래 2가지를 확인해 볼것

  • python interpreter가 가상환경 interpreter 와 일치 여부 (command shift p로 검색)
  • pip install 제대로 했는지 -> 그래도 안되면 conda상에서 install 해보기 -> 그래도 안되면 pip3 install bcrypt 등으로 해보기

6
jwt을 발행할 때, secret key와 알고리즘 = 'HS256'을 사용하게 되는데, 둘 다 중요한 정보이며 secret key는 my_settings.py에 별도로 보관되어 있다. 그래서 알고리즘 정보 또한 my_settings.py에 추가한다.
그런데 문제는, views.py에서 이를 사용할 때 2가지 문제가 발생할 수 있다.

  • my_settings.py에 대한 의존도가 높아져 이를 별도로 관리하는 의미가 다소 퇴색됨
  • my_settings.py의 파일명이나 위치가 바뀌는 등의 상황이 발생했을 때, 그리고 프로젝트 규모가 커져서 모듈들이 많아졌을 때, 또는 os.environ.get 등 다른 방식으로 환경변수를 관리해야 할 때 my_settings를 바뀐 내용으로 하나하나 바꿔줘야 한다. 즉 확장성에 문제가 생김.

따라서, from django.confg import setting하여 setting.py로부터 SECRET_KEY와 ALGORITHM을 호출한다.

7
django에서 append slash=true가 default 값이다. urlpatterns에서 일치하는 url이 없을 때 /를 붙여서 다시 한번 검색하는 것이다. 그래서 이 때 잘못 redirect가 될 수 있기 때문에 false로 변경한다.
https://codingdojang.com/scode/377

8
클라이언트와의 통신
같은 wifi인지 확인할 것
ip 주소와 endpoint 동일한지 확인할 것
오류가 났던 이유: wifi 문제 / runserver를 돌릴 때 jwt토큰까지 입력된 코드로 가지 않고 그 전 버전 코드로 가서 오류남 (즉, git branch를 해당 코드가 있는 곳으로 갔었어야)
key값을 어떻게 줄지, 어떻게 통일할지 클라이언트와 논의가 필요하다. key값이 안맞거나, 빠진 내용들이 있으면 통신이 불가능하다.

원래는 id 였던 것을 클라이언트가 작성한 Key값인 postId로 바꿨다. 그리고 commentList 에 아무 값도 없을 때 통신이 안되기에, 임시 데이터를 넣었음

9
jsonresponse를 할 때, dict 형태로 담아서 보내야 한다.
{"message" : "success"} 처럼 보내야지, {"success"}라고 보내면 오류.

10
created_at, updated_at 등 자주 사용하는 timestampmodel 등은 cores 앱을 따로 만들어 관리한다
(20220329 update) created_at/updated_at은 테이블마다 다르게 들어갈 수 있기 때문에, 테이블마다 넣는 것도 나쁘지 않은 방법일 수도 있다.

profile
예비 개발자의 기술 블로그 | explore, explore and explore

0개의 댓글