본문 바로가기

DRF13

Class-based Views Class-based Views 클래스 기반 뷰 Django's class-based views are a welcome departure from the old-style views. 장고의 클래스 기반 뷰가 기존 뷰 스타일로 부터 분리된 것은 반가운 일이다. REST framework provides an APIView class, which subclasses Django's View class. 레스트 프레임워크는 장고의 뷰 클래스를 하위 클래스로 분류하는 APIView 클래스를 제공한다. APIView classes are different from regular View classes in the following ways: APIView 클래스들은 일반적인 뷰 클래스들과 다음과 같은 차이점이.. 2022. 2. 10.
DRF 궁금한 것 모음 Serializer의 용도는 무엇인가? serializer를 사용하면 쿼리셋과 인스턴스같은 데이터를 json등과 같은 유형으로 쉽게 렌더링 할 수 있다. 뿐만 아니라 데이터의 유효성을 검사해준다. DRF에는 serializer의 종류가 다양하다. (Model, List, Base 등) 레퍼런스 APIView과 @apiview의 차이는 무엇인가? ‘클래스기반 뷰’와 ‘함수 기반 뷰’라고 볼 수 있다. 전자는 기존 장고와 유사하고 후자는 Flask나 FastAPI와 생김새가 유사하다. 레퍼런스 generics와 ViewSet의 차이는 무엇인가? generics 의 경우 ListAPIView, ListCreateAPIView 처럼 형태, 또는 명령에 대한 기능을 도와준다. 하나의 형태나 명령을 넘어서 모두 사.. 2022. 2. 3.
Bidasks, Suulgo 프로젝트 리펙토링 오늘 한 것 Bidasks 프로젝트 리펙토링 로직 순서 정렬, 레이어 분리, 불필요 코드 삭제 레포 링크 Suulgo 프로젝트 리펙토링 매칭알고리즘을 평균 가중치가 아닌 개인별 가중치로 로직 변경 레포 링크 모자른 점 두 개 프로젝트에 대해서 리펙토링을 했지만 더 좋은 코드가 있을 것 같아 스스로 의심이 든다. suulgo 의 경우, DRF의 모듈들을 활용하고 싶지만 반환 값들이 단순하지 않아 어떻게 수정해야할지 감이 안 잡힌다. 개선 방법 '좋은 코드'를 작성하려면 '좋은 코드'를 많이 보는 수밖에 없는 것 같다. 일단 주로 쓰는 라이브러리부터 살펴보고 어떤 구조와 코드로 이루어져 있는지 기록하자. 감이 안 잡힐 때는 더 작게 쪼개자. 우선 DRF로 일대다 관계의 데이터를 합쳐서 반환하는 방법을 찾아보.. 2022. 2. 2.
2022년 5주차 '스터디 시작' Weekly Study "공부할 건 많은데 무엇부터 공부해야 할지 막막한 시점." 수료 직후라 조금은 쉬고 싶기도 해서 해이해져 있었다. 기존에 듣고 있던 파이썬 동시성 프로그래밍 강의를 듣거나 알고리즘 문제를 풀거나 하면 주 초반을 보냈다. 수요일에는 위코드에서 하는 [수료 후 가이드] 세션을 들었는데 기존에 생각하던 방향성(새로운 프로젝트 도전)과 사뭇 다른 가이드를 받고 다시 계획을 세워보기로 했다. 우선 취업에 도움이 되는 것은 새로운 프로젝트보다는 기존 프로젝트에 대한 리펙토링. 즉 유지보수가 더 도움이 될 거라는 것과 특히 백엔드의 경우 SQL과 CS 이론에 대한 지식이 부족하니 이쪽으로 공부를 집중하는 게 좋겠다는 내용이었다. 가이드는 충분히 동의하는 내용이었고 이를 위해 세션이 끝나자마자 .. 2022. 1. 30.
DRF에서 라우터는 왜 사용하는가? 목표 수정과 삭제기능 구현하기 라우터는 왜 사용하는가? 목적 DRF로 간단한 CRUD를 구현하여 기본 구조를 익히고자 함 DRF에서 router를 왜 사용하고 어떻게 사용하는지 이해하기 위함 결과 viewset과 serializer를 이용하여 수정과 삭제 기능 구현 완료 (사실상 어제 완료가 된 것이었으나 uri에 '/'의 위치가 잘못되어 작동하지 않았던 것임) router를 사용하는 이유 viewset과 연계하여 url의 하드코딩을 막을 수 있다. as_view를 통해 각 request method마다 api를 연결시켜주었다면 router는 이를 알아서 연결해줌. message_list = MessageViewSet.as_view({ 'get': 'list', 'post': 'create', }) me.. 2022. 1. 29.
DRF를 사용하여 간단한 CRUD 구현해보기 목표 DRF를 사용하여 간단한 CRUD 구현해보기 viewset 이용하기 serializer 이용하기 목적 DRF 기본기능 익히기 결과 viewset과 serializer를 이용하여 읽기(get), 쓰기(post) 기능 구현 수정(update)과 삭제(delete) 기능은 구현하지 못함 # serializers.py class MessageSerializer(serializers.ModelSerializer): class Meta: model = Message fields = "__all__" # views.py class MessageViewSet(viewsets.ModelViewSet): queryset = Message.objects.all() serializer_class = MessageSeri.. 2022. 1. 28.