1
User.objects.all()
> filter()
를
User.objects.filter()
로 바로 사용하면 됨
굳이 모든 데이터를 다 불러와서 filter를 추가로 적용할 필요가 없음
2
확장성을 생각할 것
그냥 바로 data['email']
를 넣는것보다, 변수에 담아서 사용하면 확장성에 용이함
3
에러메세지 등 네이밍/컨벤션 잘 확인할 것
에러메세지 내용마다 status 코드 잘 확인할 것
에러메세지는 클라이언트에 전달되면, 어차피 클라이언트 단에서 다시 분류 작업을 하므로 굳이 너무 길거나 message/error message 등 key값을 나눌 필요가 없음
4
변수,상수 등은 무조건 위에 올릴 필요는 없음
파이썬은 위에서부터 아래로 읽기 때문에, 흐름에 맞춰서 작성하면 됨
5
bcrypt, pyjwt 등을 import 할 때 안되면 아래 2가지를 확인해 볼것
6
jwt을 발행할 때, secret key와 알고리즘 = 'HS256'을 사용하게 되는데, 둘 다 중요한 정보이며 secret key는 my_settings.py에 별도로 보관되어 있다. 그래서 알고리즘 정보 또한 my_settings.py에 추가한다.
그런데 문제는, views.py에서 이를 사용할 때 2가지 문제가 발생할 수 있다.
따라서, 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값이 안맞거나, 빠진 내용들이 있으면 통신이 불가능하다.
9
jsonresponse를 할 때, dict 형태로 담아서 보내야 한다.
{"message" : "success"} 처럼 보내야지, {"success"}라고 보내면 오류.
10
created_at, updated_at 등 자주 사용하는 timestampmodel
등은 cores
앱을 따로 만들어 관리한다
(20220329 update) created_at/updated_at은 테이블마다 다르게 들어갈 수 있기 때문에, 테이블마다 넣는 것도 나쁘지 않은 방법일 수도 있다.