터칭 데이터
장고(Django) POST 본문
이제는 POST로 새로운 Question을 만드는 기능을 구현해보자
polls_api/views.py에서
@api_view()로 아무 것도 주지 않으면 자동으로 GET으로 판단합니다. 이번에는 GET과 POST를 데코레이터에 인자로 줍니다.
그리고 request.method가 GET인지 POST인지 나누어 진행합니다. GET은 지난 시간과 똑같습니다.
POST에서 QuestionSerializer에 data와 instance가 아닌 data만 주면 create라고 했었죠? 우리는 새로운 question을 POST(만드는)하는 기능을 구현하므로 data=request.data만 주었습니다.
그리고 serializer.is_valid()로 유효할 때만 save()를 진행하고 그렇지 않으면 에러를 띄우라는 뜻입니다.
지난 시간 만든 Question을 JSON으로 조회하는 res/question URL에서
오른쪽 OPTIONS를 누르고
위와 같이 JSON 형태로 입력후 필드명과 값을 작성한 후, POST를 누르면
정상적으로 데이터가 입력된 것을 확인할 수 있습니다.
에러도 한번 띄워보겠습니다.
question_text의 최대 길이인 200자를 넘는 값을 입력합니다.
200글자를 넘지 말라는 에러는 뜨지만
개발자 도구에서는 Status Code가 200 OK가 뜹니다.
이를 해결하려면
rest_framework의 status의 도움을 받아 Response 두번째 인자로 어떤 status를 띄울지 설정할 수 있습니다.
'장고 (Django)' 카테고리의 다른 글
장고(Django) 클래스(Class) 기반의 뷰(Views) (0) | 2023.11.04 |
---|---|
장고(Django) PUT/DELETE (0) | 2023.11.04 |
장고(Django) GET (0) | 2023.11.04 |
장고(Django) ModelSerializer (0) | 2023.11.04 |
장고(Django) 장고 쉘에서 Serializer 사용하기 (0) | 2023.11.04 |