개발을 파헤치다/Django(21)
-
Django grappelli로 쓸만한 어드민 만들기
어드민도 UI가 중요하다 Django의 최고 장점 중 하나는 Model 설계와 API, Admin 개발을 한번에 할 수 있다는 것이죠 아시다시피 이 세가지는 서비스 운영에 있어서 서버 쪽에서는 필수적입니다. 제 개인적인 생각으로 Django에서 기본적으로 제공하는 Admin의 UI는 아주 소규모의 스타트업이나 1인 기업가가 운영과 개발을 동시에 할 때 적합한 것 같습니다. 하지만 운영팀이 따로 있다면 조금 얘기가 달라질 수 있죠. 서비스가 수익을 창출하기 위해서는 효율적인 운영이 필수적인데요. 운영팀이 사용하기에 편한 직관적인 UI로 Admin 사이트를 만들어 줄 수 있다면 개발자 입장에서도 굉장히 뿌듯한 일이겠죠? (능력 뿜뿜!!) 제가 검토한 Django Admin 템플릿 중에서 grappelli를 ..
2020.12.08 -
Django에서 Model의 기본적인 사용법
Django에서 Model이란? Django를 이용해서 개발을 진행할 때 개념적인 부분을 정확히 이해해야 제대로 된 개발이 가능합니다. Django같은 Framework는 다 탄생배경이 있으며 어떤 목적을 위해 만들어졌기 때문이죠 그래서 이런 부분을 알아야 내 상황과 프로젝트 특징에 따라서 가장 효율적인 선택을 할 수 있습니다. Model은 여러분의 웹어플리케이션을 구성하는 하나의 데이터 단위를 의미하는데요. 예를 들어, 쇼핑몰 웹사이트를 만든다고 한다면 아래와 같은 데이터들이 필요하겠죠 회원정보 물품정보 브랜드 종류 장바구니 정보 etc... 이렇게 어플리케이션이 원활하게 돌아가는데 필요한 데이터들이 있는데요. 이것들을 정의하는 것 역시 개바자의 몫입니다. 저는 이런 점 때문에 개발을 참 좋아하는데요!..
2020.08.10 -
[Django Rest Framework] Serializer에 Model Instance를 인자값으로 보내기
DRF(Django REST Framework)를 사용할 때 Serializer는 정말 다양하게 쓰이는데요. Serializer 내부의 create나 validate 메서드를 오버라이드 해서 각자 상황에 맞는 로직을 구성할 수 있습니다. 경우에 따라서는 Serializer 내부에서 다른 Serializer의 메서드를 호출할 수도 있는데요. 이번 포스팅에서는 이런 경우 한 Serializer에서 다른 Serializer에 어떻게 Model Instance를 인자 값으로 보낼 수 있는지 살펴보겠습니다. 먼저, 이런 경우가 언제 있는지 비즈니스 로직 흐름을 한번 설명드릴게요. 어떤 프로젝트를 생성한다고 할 때 프로젝트와 관련된 이미지들을 따로 저장하려고 합니다. 이 이미지들을 저장하는 테이블을 ImageTab..
2020.08.03 -
Django ORM에서 Subquery 사용하기
사용자의 다양한 요청에 대한 응답을 하기 위해서는 DB Level에서 다양한 연산이 필요합니다. Django ORM을 사용하게되면 직접 Query를 작성할 수도 있지만 이보다는 ORM에서 제공하는 메서드들을 활용하는 것이 더 나을 수 있습니다. 왜냐하면 Raw Query로는 Django REST Framework에서 제공하는 다양한 기능(e.g Filtering, Ordering)을 사용하는데 제한이 있을 수 있기 때문입니다. 아래의 예시를 통해 Sub Query를 사용하는 방법을 알아보도록 합니다. # models.py class Video(models.Model): id = models.AutoField(primary_key=True) title = models.TextField(max_length=..
2019.04.16 -
Python에서 Datetime과 Timezone 다루기
Datetime은 python에서 날짜와 시간을 표현하는 아주 유용한 패키지입니다. 대다수의 데이터베이스의 시간은 기본적으로 UTC 시간을 기준으로 설정이 되어 있습니다. 국내에서만 서비스를 한다고 하면 데이터베이스의 시간을 한국표준시간(KST)로 설정할 수도 있습니다. 하지만 글로벌 서비스의 경우에는 해당 유저에 따라 적절한 시간대를 보여주어야 할 경우도 생기게 됩니다. 이럴때에는 데이터베이스에 UTC시간으로 저장을 해놓고 데이터를 가공할 때 Timezone을 원하는 지역의 Timezone으로 변경하면 됩니다. 이제 그 방법을 알아보도록 합니다. Timezone 변경하기from datetime import datetime from pytz import timezone # 현재 시간을 UTC로 표시한다 ..
2019.04.10 -
Django에서 Many To Many 필드 다루기
Many To Many 관계란? Django에서 Many To Many 관계는 하나의 모델이 다른 여러 모델과 관계를 가질 수 있고, 이것의 역도 가능한 관계입니다. 위의 그림에서 사람과 고양이가 존재합니다. Mike는 Tigger와 Max의 주인입니다만, Max는 또 다른 주인으로 Eva를 섬기고 있습니다. 이렇게 모델들이 서로 다 대 다의 관계를 가지는 것이 바로 Many To Many 관계라고 할 수 있습니다. One To Many 관계라면 Max는 Mike나 Eva 둘 중 한명을 주인으로 정해야 할 것입니다. 위의 관계를 Django는 아래처럼 데이터베이스에 관계가 저장되는 테이블을 생성합니다. 자, 이제 코드를 살펴봅시다. Many To Many구조가 아래와 같이 잡혀있다고 가정합니다. # mo..
2019.03.27