DRF 13

2022년 8주차 '내 서비스를 만들기 시작했다'

Weekly growth DRF를 사용해 CS Quiz 웹 서비스를 만들었다. 직접 기획한 코딩 챌린지를 통해 2일간 DRF를 활용하여 CS Quiz 웹 서비스를 만들었다. DRF를 배우고 곧바로 개인 프로젝트에 적용하면서 사용법을 익혔다. 2일간 집중한 결과 계획한대로 프로젝트를 마칠 수 있었다. 이에 대한 자세한 내용은 다음과 같다. 프로젝트 회고 2022.02.19 - [Project/CS_Quiz_# CS 퀴즈 앱] - CS_Quiz_#1. CS를 재미있게 학습하려면 프로젝트 깃헙 GitHub - Daco2020/CS-Quiz-app: Computer Science 지식을 Quiz 를 통해 쉽고 재미있게 학습하는 웹 서비스입니 Computer Science 지식을 Quiz 를 통해 쉽고 재미있게 ..

Generic views - Methods

*이 글은 DRF 공식문서를 보고 개인적으로 번역한 글입니다. 전문적인 번역이 아니므로 내용이 틀릴 수 있습니다. Generic views - Methods Base methods: get_queryset(self) 이 메서드는 리스트 뷰, 디테일 뷰의 조회를 위해 사용되는 쿼리셋을 반환한다. queryset의 지정된 속성에 따라 반환되는 것이 기본값이다. self.queryset 보다 이 매서드를 사용해야한다. self.queryset 은 결과를 이후 모든 리퀘스트에 캐시되기 때문이다. 유저의 리퀘스트에 따른 쿼리셋 반환처럼 다양한 요청에 응답하기 위해 오버라이드할 수도 있다. For example: def get_queryset(self): user = self.request.user return u..

Generic views - Attributes

*이 글은 DRF 공식문서를 토픽별로 번역한 글입니다. Generic views 장고의 제네릭 뷰... 공통적으로 사용되는 패턴들을 줄이기 위해 개발되었다. 뷰 개발에서 찾을 수 있는 일반적인 관용구와 패턴을 가져오고, 반복하지 않고도 일반적인 뷰를 빠르게 작성할 수 있도록 추상화한다. 클래스 기반 뷰의 가장 큰 이점 하나는 재사용 가능한 기능을 구성할 수 있다는 것이다. 레스트 프레임워크는 공통적으로 사용되는 패턴을 여러 내장 뷰로 제공해준다. 제네릭 뷰는 디비 모델과 밀접한 API를 빠르게 만들 수 있도록 도와한다. 만약 제네릭 뷰가 너의 API에 필요하지 않다면, 너는 일반 APIView클래스를 사용할수도 있다. 또는 믹스인과 기본클래스를 활용하여 재사용할 수 있는 제네릭 뷰를 만들 수 있다. Ex..

2022년 7주차 '스터디도 애자일 하게'

Weekly growth 데일리 체크리스트에 '결과물'을 함께 작성하기 시작했다. 결과물을 함께 작성하니 내가 일주일 동안 무엇에 집중했는지 알 수 있었다. 뿐만 아니라 내가 공통적으로 놓치는 것들도 알 수 있었다. 내가 놓치는 것들은 주로 독서항목이었는데 스터디나 개발 공부를 하다 보니 아무래도 우선순위가 뒤로 밀렸다. 이처럼 자신이 한 일들을 기록하는 것은 나 자신을 알아가는 효과적인 방법인 것 같다. 이러한 기록들을 살펴보면 내 자신이 무엇을 중요하게 여기고 무엇을 가볍게 여기는지 알게 된다. '데일리 체크리스트'를 실제 서비스로 만들어보고 싶다. 체크리스트를 작성하다 보니 재미난 아이디어가 생각났다. 나는 위 이미지처럼 21년부터 내가 사용한 시간을 우선순위별로 분류하고 있었다. 이와 유사하게 데..

Function Based Views

Function Based Views 함수 기반 뷰 Saying [that class-based views] is always the superior solution is a mistake.— Nick Coghlan 클래스 기반 뷰가 항상 우수한 해결책이라고 말하는 것은 실수다. REST framework also allows you to work with regular function based views. 레스트 프레임워크는 너가 일반적인 함수 기반 뷰로도 일할 수 있는 것을 허용한다. It provides a set of simple decorators that wrap your function based views to ensure they receive an instance of Request ..

파이썬에서의 객체가 무엇인지 알게되었다.

오늘 한 것 객체지향의 사실과 오해 2장 읽고 블로그 포스팅 2022.02.10 - [Review series/객체지향의 사실과 오해] - 행동이 상태를 결정한다. 객체의 행동과 상태를 구현한 코드 작성 깃헙 링크 DRF 공식문서 1개 토픽 번역 및 포스팅 2022.02.10 - [Document translation/Django REST framework] - Class-based Views 성장한 점 객체의 특성, 그리고 파이썬에서의 객체가 무엇인지 알게되었다. (알고보니 파이썬은 모든 값이 객체였다...!) DRF를 익히기 위해 공식문서에 처음 번역해보았다. 노력할 점 객체를 이해하는데 오래걸려 다른 CS 공부가 더디게 진행되고 있다. 어느정도 이해했다면 다른 공부로 넘어가도 좋을 것 같다. DRF..

Log/Today 2022.02.11

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 클래스들은 일반적인 뷰 클래스들과 다음과 같은 차이점이..

DRF 궁금한 것 모음

Serializer의 용도는 무엇인가? serializer를 사용하면 쿼리셋과 인스턴스같은 데이터를 json등과 같은 유형으로 쉽게 렌더링 할 수 있다. 뿐만 아니라 데이터의 유효성을 검사해준다. DRF에는 serializer의 종류가 다양하다. (Model, List, Base 등) 레퍼런스 APIView과 @apiview의 차이는 무엇인가? ‘클래스기반 뷰’와 ‘함수 기반 뷰’라고 볼 수 있다. 전자는 기존 장고와 유사하고 후자는 Flask나 FastAPI와 생김새가 유사하다. 레퍼런스 generics와 ViewSet의 차이는 무엇인가? generics 의 경우 ListAPIView, ListCreateAPIView 처럼 형태, 또는 명령에 대한 기능을 도와준다. 하나의 형태나 명령을 넘어서 모두 사..

Bidasks, Suulgo 프로젝트 리펙토링

오늘 한 것 Bidasks 프로젝트 리펙토링 로직 순서 정렬, 레이어 분리, 불필요 코드 삭제 레포 링크 Suulgo 프로젝트 리펙토링 매칭알고리즘을 평균 가중치가 아닌 개인별 가중치로 로직 변경 레포 링크 모자른 점 두 개 프로젝트에 대해서 리펙토링을 했지만 더 좋은 코드가 있을 것 같아 스스로 의심이 든다. suulgo 의 경우, DRF의 모듈들을 활용하고 싶지만 반환 값들이 단순하지 않아 어떻게 수정해야할지 감이 안 잡힌다. 개선 방법 '좋은 코드'를 작성하려면 '좋은 코드'를 많이 보는 수밖에 없는 것 같다. 일단 주로 쓰는 라이브러리부터 살펴보고 어떤 구조와 코드로 이루어져 있는지 기록하자. 감이 안 잡힐 때는 더 작게 쪼개자. 우선 DRF로 일대다 관계의 데이터를 합쳐서 반환하는 방법을 찾아보..

Log/Today 2022.02.02

2022년 5주차 '스터디 시작'

Weekly Study "공부할 건 많은데 무엇부터 공부해야 할지 막막한 시점." 수료 직후라 조금은 쉬고 싶기도 해서 해이해져 있었다. 기존에 듣고 있던 파이썬 동시성 프로그래밍 강의를 듣거나 알고리즘 문제를 풀거나 하면 주 초반을 보냈다. 수요일에는 위코드에서 하는 [수료 후 가이드] 세션을 들었는데 기존에 생각하던 방향성(새로운 프로젝트 도전)과 사뭇 다른 가이드를 받고 다시 계획을 세워보기로 했다. 우선 취업에 도움이 되는 것은 새로운 프로젝트보다는 기존 프로젝트에 대한 리펙토링. 즉 유지보수가 더 도움이 될 거라는 것과 특히 백엔드의 경우 SQL과 CS 이론에 대한 지식이 부족하니 이쪽으로 공부를 집중하는 게 좋겠다는 내용이었다. 가이드는 충분히 동의하는 내용이었고 이를 위해 세션이 끝나자마자 ..