Djaong | HTTP 통신할 때 Error 모음

Sua·2021년 2월 2일
1

Django

목록 보기
4/23
post-thumbnail
post-custom-banner

KeyError

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


JSONDecodeError

전달될 값이 없으니 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)

ValueError

모델에 정의된 타입(ex. IntegerField)과 입력값의 타입이 안 맞을 때 나는 에러


DataError

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


DoesNotExist

장고 쿼리셋 메소드 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

해결 방법
getfilter로 바꾸면 된다. filter는 반환값이 없을 경우 빈 쿼리셋을 반환한다.

https://codehanry.tistory.com/28


That Port is already in Use

이미 서버가 돌아가고 있는데 또 서버를 키려고 할 때 뜨는 에러

터미널을 비정상적으로 껐을 때 서버가 종료되지 않을 수 있는데, 모르고 서버를 키려고 하면 에러를 만나게 된다.

Response

해결방법

우분투
sudo fuser -k 8000/tcp


sudo lsof -i tcp:8000


AttributeError

User.objects.get에서 쿼리셋 매니저인objectsobject로 쓰면 에러가 난다. 오타 조심!

AttributeError: type object 'User' has no attribute 'object'
[02/Feb/2021 17:08:31] "POST /user/login HTTP/1.1" 500 75691

Method Not Allowed

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


RuntimeError

앱 생성은 했으나 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.


SyntaxError

models.py에 없는 필드를 views.py GET 메소드로 가져오려고 할 때 나는 에러

존재하지 않는 속성(필드)를 불러올 때 나는 에러


Connection error

Runserver하지 않고 HTTP 통신을 시도할 때 나는 에러


Indentation Error

들어쓰기를 제대로 하지 않았을 때 나는 에러


ValidationError

장고에 내장된 validator를 썼을 때 나는 에러
하지만 우리는 직접 정규식을 작성했으므로 이 에러를 만날 수 없다.

profile
Leave your comfort zone
post-custom-banner

0개의 댓글