본문 바로가기

소프트웨어-이야기/프로그래밍 언어와 프레임워크

(Django) Rest Frame Work Filter 활용하기 FilterBackend 사용하기ViewSet에서 Request 파라미터로 받은 값이랑 일치하는 데이터를 조회해야할 때, 아래처럼 일일히 파라미터를 받아다가, filter 조건에 추가해줘야한다. class ProductList(generics.ListAPIView): serializer_class = PurchaseSerializer def get_queryset(self): """ This view should return a list of all the purchases for the user as determined by the username portion of the URL. """ category = self.kwargs['category'] in_stock = self.kwargs['in_s..
(Django) DB Connection을 관리하는 방법 Connection 재사용 ( Persistent connections ) Django는 데이터베이스에 쿼리를 처음 날리기 전에 Connection을 맺는다. 그리고 커넥션을 계속 열어뒀다가, 다음 요청이오면 이걸 재사용한다. Request가 날라올 때마다 Connetion을 새로 맺는건 부담이 큰 작업이다. 그래서 Django에는 CONN_MAX_AGE라는 설정값이 있다. 여기에 설정된 기간만큼 Connection을 닫지않고, 보존하겠다는 개념이다. 따로 설정해주지 않으면 0으로 설정된다. 즉, Connection을 매번 만들고, 닫겠단 이야기다. 그리고 만약 Connection의 사용기간에 제한을 두고 싶지 않으면, None을 설정해주면 된다. ( Persistent Connections ) Conn..
(django) get_XXX_display 함수 : 모델의 속성 값을 사람이 읽을 수 있는 문장으로 변환하기 Django Model Field에 choices 속성이 걸려있는 경우, 코드에 맞는 display용 텍스트를 볼 수 있게 하는 함수가 있다.음.. 말로하면 어려운데, 아무튼 이런거다. from django.db import models class Book(models.Model): CONDITIONS = ( (1, '새책'), (2, '중고책'), ) name = models.CharField(max_length=60) condition = models.CharField(max_length=2, choices=CONDITIONS)이 경우, Book의 상태값은 1과 2로 저장된다. 그런데 책 정보를 웹페이지에 보여줄 때는 '새책', '중고책'처럼 사람이 읽을 수 있는 문장으로 보여주고 싶을 때는 get_..
(django) 자주 사용되는 queryset 모아서 관리하기 자주 사용되는 query set들을 한군데 모아서 관리하는 방법을 설명해보고자 합니다 :) 1. manager.py 를 만들어서, query set을 추가합니다 class LessonQuerySet(models.QuerySet): def jazz(self): return self.filter(subject='jazz') 2. model에 queryset을 manager으로 등록합니다 class Lesson(models.Model): from_time = models.CharField() to_time = models.CharField() subject = models.CharField() objects = LessonQuerySet.as_manager() 3. custom queryset은 다음과 같이 ..
Django VS Ruby On Rails Django가 루비온레일즈를 보고 만들었다고 하는데, 어떤 점이 같고 다른지 정리해보고자 한다. 공통점1. 마이그레이트 파일로 테이블을 관리한다. 레일즈가 schema_migrations 테이블에 마이그레이트 코드를 관리한다면, 장고는 애플리케이션이름과 마이그레이트 파일명 단위로 마이그레이트 코드를 관리한다. 2. 기타 등등* 마이그레이트로 테이블을 만들면, 자동으로 id 필드를 추가해준다. * 모델의 CRUD 페이지를 자동으로 만들어주는 어드민 기능이 루비온레일즈의 스캐폴드 기능이랑 유사하다. * 루비온레일즈에서 레코드가 추가/수정된 시각을 created_at, updated_at에 저장하는 것 처럼, 장고도 비슷한 개념이 있다. 다른점1. 루비온레일즈는 MVC 모델을 기반으로 작성된다. 그런데 Dja..
레일즈에 Service/Decorator Layer 적용하기 (8) - 끝~ 이 포스팅은
레일즈에 Service/Decorator Layer 적용하기 (7) - Helper 대신에 Decorator 사용하기 이 포스팅은
레일즈에 Service/Decorator Layer 적용하기 (6) - Service Object으로 콜백 옮기기 이 포스팅은