View에 정의된 키(여기에선 id
, password
)가 모두 전달되지 않았을 때 나는 에러
Request
http -v POST 127.0.0.1:8000/user/login id="mori"
http -v POST 127.0.0.1:8000/user/login id=
Response
password = data['password']
KeyError: 'password'
[02/Feb/2021 15:48:15] "POST /user/login HTTP/1.1" 500 75200
전달될 값이 없으니 decode를 못 해서 생기는 에러(맞는지..?)
Request
http -v POST 127.0.0.1:8000/user/login
Response
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
[02/Feb/2021 15:37:36] "POST /user/login HTTP/1.1" 500 90858
해결방법
JSONDecodeError
를 try, except로 처리
try:
코드
except JSONDecodeError:
return JsonResponse({'message': 'JSON_DECODE_ERROR'}, status=400)
모델에 정의된 타입(ex. IntegerField
)과 입력값의 타입이 안 맞을 때 나는 에러
Model 필드에 정의된 속성(ex. max_length=30
)과 맞지 않는 값이 입력되었을 때 나는 에러
Request
http -v POST 127.0.0.1:8000/user/signup email="mori@gmail.com" full_name="morimorimorimorimorimorimorimorimorimorimorimorimorimorimorimorimorimorimorimorimorimorimorimori" username="mori" password="12345678"
Response
django.db.utils.DataError: (1406, "Data too long for column 'email' at row 1")
[02/Feb/2021 16:38:33] "POST /user/signup HTTP/1.1" 500 210352
장고 쿼리셋 메소드 get
은 객체를 반환하는데, get
이 아무런 객체를 반환하지 않을 때 나는 에러
Response
raise self.model.DoesNotExist(
user.models.User.DoesNotExist: User matching query does not exist.
[02/Feb/2021 16:55:25] "POST /user/login HTTP/1.1" 500 85343
해결 방법
get
을 filter
로 바꾸면 된다. filter
는 반환값이 없을 경우 빈 쿼리셋을 반환한다.
https://codehanry.tistory.com/28
이미 서버가 돌아가고 있는데 또 서버를 키려고 할 때 뜨는 에러
터미널을 비정상적으로 껐을 때 서버가 종료되지 않을 수 있는데, 모르고 서버를 키려고 하면 에러를 만나게 된다.
Response
해결방법
우분투
sudo fuser -k 8000/tcp
맥
sudo lsof -i tcp:8000
User.objects.get
에서 쿼리셋 매니저인objects
를 object
로 쓰면 에러가 난다. 오타 조심!
AttributeError: type object 'User' has no attribute 'object'
[02/Feb/2021 17:08:31] "POST /user/login HTTP/1.1" 500 75691
View에 정의되지 않은 GET
메소드를 요청할 때 나는 에러
Request
http -v GET 127.0.0.1:8000/user/login id="mori" password="12345678"
Response
Method Not Allowed (GET): /user/login
Method Not Allowed: /user/login
[02/Feb/2021 16:07:57] "GET /user/login HTTP/1.1" 405 0
앱 생성은 했으나 INSTALLED_APPS
목록에 앱 추가안했을 때 나는 에러
Runserver
python manage.py runserver
Response
raise RuntimeError(
RuntimeError: Model class user.models.User doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
models.py에 없는 필드를 views.py GET 메소드로 가져오려고 할 때 나는 에러
존재하지 않는 속성(필드)를 불러올 때 나는 에러
Runserver하지 않고 HTTP 통신을 시도할 때 나는 에러
들어쓰기를 제대로 하지 않았을 때 나는 에러
장고에 내장된 validator를 썼을 때 나는 에러
하지만 우리는 직접 정규식을 작성했으므로 이 에러를 만날 수 없다.