티스토리 뷰

Django Framework

기타 에러들

lluna 2021. 11. 28. 22:14

get_list_or_404 or get_object_or_404?

쿼리셋(오브젝트의 리스트) 일때는 전자를, 하나의 오브젝트일때는 후자를 사용한다.

 

authorized error 1 => @permission_classes([AllowAny])

인증 관련 에러의 경우, vue와 연동하면서 로그인 토큰을 아직 받아오지 못하였거나 혹은 AllowAny 설정이 되어있지 않아서 장고가 막아버리는 경우이다. 테스트를 위해 @permission_classes([AllowAny]) 를 설정해야 view 함수를 실행할 수 있다.

 

authorized error 2 => token 받기 전과 후를 구분할 것

vue가 아직 로그인정보를 제공해주고 있지 않다면, 백엔드에서는 postman으로 주소를 요청할 때, user정보를 넣어서 보내야 한다.

이때 받아오는 데이터는 request.data['user']이며 User = get_user_model() 로 불러와 해당 유저를 콕 집어서 이용해야 한다.

반면 token을 받아온 후에는 postman으로 주소를 요청할 때 user 정보가 들어가서는 안되며, 유저는 자동적으로 request.user로 불러와진다. 이 점을 꼭 기억하자!

 

RuntimeWarning: DateTimeField received a naive datetime

에러 : RuntimeWarning: DateTimeField received a naive datetime

원인 : datatime 필드에서 .now() 사용시 settings.py의 timezone과 datetime.now()의 timezone이 다르기 때문에 오류가 발생

해결방안 1 : settings.py USE_TZ = True 값을 False로 변경하여 local 시간대로 사용

해결방안 2 : 필요한건 시간이 아닌 Date이기 때문에 DateTimeField() 를 DateField() 로 변경

 

참고 

https://velog.io/@inyong_pang/Django-RuntimeWarning-DateTimeField-received-a-naive-datetime

 

[Django] RuntimeWarning: DateTimeField received a naive datetime

Python Djnago에서 날짜와 시간을 다루는 DateTimeField를 사용 시, timezone관련 이슈timestamp without time zone인 것을 테이블 스키마를 장고로 Insert할 때, DateTimeField로 정의해당 컬럼(필드)에 대해 d

velog.io

 

댓글