TIL(37일차)

김규현·2022년 10월 25일
0

📝오늘 배운 것

DRF(DjangoRestFramework) Tutorial

  • DRF를 사용하기 위한 프로젝트 세팅(djangoframework 설치)
  • serializers : REST API를 제공하는 장고의 앱에서 DB에 있는 데이터를 JSON 형식으로 변환하거나, 반대로 JSON 형식의 데이터를 DB에 저장할 수 있도록 변환해 주는 클래스
  • ModelSerializer : 모델을 기반으로 만든 serializer로 모델에 맞는 필드를 자동으로 만든다.
  • DRF로 만든 API를 포스트맨으로 여러 request로 간편하게 테스트 할 수 있다.
  • DRF로 만든 API를 Swagger로 한 페이지에 정리해서 볼 수 있고, 테스트 할 수 있다.
  • ClassView : 클래스로 http의 method를 담아 관리하는 view로 django에서 제공하는 여러 view를 알맞게 상속받아 대부분의 로직을 쉽고 빠르게 필요한 기능을 구현할 수 있다.

🚨 Classview를 배우기 전 APIview(함수형 뷰)로 데이터를 수정하는 PUT 로직을 만들고, 해당 url에 접속하여 데이터를 변경하여 PUT을 눌렀는데 AssertionError가 떴다. ![](https://velog.velcdn.com/images/kkh2742/post/5815a189-9c20-45c8-ace7-07899fd25894/image.png)

에러 메세지를 훑어보고 대충 Response와 관련된 에러겠구나 했지만 어떤 부분에서 잘못된 건지 한참 헤메다가 serializer을 검증하는 if문에서 response를 return하고 그 다음에 실행될 코드나, return할 Response나 HttpResponse 등이 없기 때문에 해당 에러가 발생한 것을 알 수 있었다.

따라서 if문이 종료되고 빠져나온 직후 검증할 serializer가 없을 경우 error를 Response로 return을 하거나, 검증할 serializer가 없으면 else문으로 error를 Response로 return 해주면 된다.
즉 검증할 serializer가 없을 때 error 처리를 해주지 않아 발생한 문제였고, else문으로 하던, if문 탈출 후에 return을 해주던 error 처리를 해서 함수를 종료시키면 된다.

이번에 겪은 에러는 DRF가 익숙하지 않은 탓이 아니라 파이썬 기초가 부족한 탓에 발생한 에러인 것 같다. 강의와 프로젝트를 따라가면서 틈틈이 알고리즘 공부도 해야겠다는 생각이 들었다.

profile
웹개발 회고록

0개의 댓글