Django, DRF/Django, DRF Study

Response에 이어서 exception_handler를 이용하여 기본 예외 포맷이나 응답 구조를 사용자화 하려고한다. 들어가기에 앞서 exception_handler란 무엇인가?'exception_handler'는 DRF의 예외처리 기능으로 API에서 발생한 예외를 처리하고 사용자 지정 응답을 생성하는 역할을 한다. 기본적으로 exception_handler를 사용하여 예외처리를해도 아무런 문제가 없지만 이를 재정의해서 사용자 지정 로직을 적용시켜 보려고한다. 예외처리를 커스터마이징 하기 위한 절차로는1. exception_handler를 재 정의한다.2. 예외를 처리하고 사용자 지정 응답을 생성하는 로직을 구현한다.3. 설정 파일에서 재정의한 핸들러를 등록한다. 아래는 1번 exception_han..
지난 Renderer에 이어서 Custom Response를 구현한 내용에 대해 작성해 보려고한다. 먼저 이야기하자면, Response를 구현하는것은 어렵지 않았지만, renderer과 response를 커스터마이징해서 구현했는데 data가 중복되어 매핑되는 문제가 생겼었다.  이런 저런 방법을 사용하고 수정해봐도 2번 매핑이되어서 settings에서 renderer 디폴트값을 주석처리해두고 진행하였다. 추후 알게된 사실은 Response 클래스는 renderer 메서드를 내부적으로 호출하고 있기 때문에 하나만 사용하면 되는 것이였다. 그럼 둘의 차이점은 무엇일까?우선 Response는 응답 객체를 생성할때마다 해당 클래스를 인스턴스화 하여 사용해야한다. 즉, 생성할때마다 Response 객체를 만들어줘..
DRF는 Django를 이용하여 API를 쉽게 만들 수 있도록 도와주는 프레임워크이다. 다른 프레임워크나 언어에 비해 배우기 쉽다는 장점이 있어 많은 사람들이 처음 시작하는데 자주 사용하는데 조금만 깊게 공부를 하면 할수록 커스텀이 필요하다는 말을 들었다.  특정 프로젝트에서는 요구사항에 맞게 JSONRenderer를 커스터마이징해서 사용해야 할 경우도 생긴다고 한다. 이번 포스트에서는 DRF에서의 JSONRenderer를 커스터마이징 하는 방법에 대해서 작성해 보려고 한다.DRF의 기본적인 Response의 경우에는 왼쪽 사진처럼, 커스터마이징한 결과는 오른쪽처럼 표시가 되도록 하려고 한다.우선 rest_framework.renderers에서 JSONRenderer를 상속받아 오버라이딩해 주었다.# c..
ORM ORM은 객체(Object)와 관계형 데이터베이스(Relational Database)를 연결해준다. SQL을 작성하는 것이 아니라, ORM을 이용하여 프로그래밍 언어로 DML을 수행할 수 있다. 즉, ORM은 객체 지향 프로그래밍에서 관계형 데이터 베이스의 데이터를 객체로 매핑하는 기술이다. ORM의 장점으로는 객체지향적인 코드를 통해서 데이터를 다루기 때문에 코드 가독성이 높고, 생산성을 높여준다. 반대로, 단점으로는 쿼리하는 데이터가 복잡해질 수록 ORM이 불편하고 제약으로 인해 SQL의 모든 기능을 활용하지 못할 수 도 있다는 단점이 있다. 그 외의 ORM의 장점 더보기 1. 트랜잭션 관리 ORM은 트랜잭션을 사용하여 데이터베이스의 작업의 일관성과 안전성을 보장한다. Django의 ORM은..
프로젝트를 진행하면서 import문은 빠질 수 없는 부분이다. 코드를 작성하고 디버깅하는 동안 import문을 생각없이 막 작성하였고 코드가 길어지고 복잡해질수록 import문의 순서와 구조가 중요하다는게 느껴졌다. 처음에는 간단한 코드만 작성해서 별 생각 없이 작성하였는데, 코드가 질어지니 import문을 찾는것도 힘들었다. 그러다 문득 변수명도 규칙과 스타일이 있는데 import문을 작성하는 규칙이나 스타일은 없을까? 라는 생각이 들었고 정의된 규칙이 있다는 것을 알게 되었다. import 순서의 간단한 규칙 import문은 알파벳 순서로 정렬될 수 있다. 한줄에 하나의 import문을 작성하여 가독성을 높인다. 각 그룹마다 빈 줄을 추가하여 import 그룹을 시각적으로 구분한다. 라이브러리의 축약..
Jong_seoung
'Django, DRF/Django, DRF Study' 카테고리의 글 목록