하루만에 완성하는 Django+DRF 서비스(1)

June
None
Published in
6 min readMar 1, 2023
출처: https://www.django-rest-framework.org/

안녕하세요. 휴먼스케이프 june입니다.

이번 시리즈에서는 django+drf 조합을 이용해 서비스를 빠르게 만드는 법에 대해 알아보도록 하겠습니다.

이번 시간엔 간단히 프로젝트의 생성, 모델의 생성만 진행할 예정입니다.

프로젝트를 진행한 코드는 깃허브에 올라가 있으니 참고하시기 바랍니다.

주제 선정

어쩌면 이번 시리즈에서 가장 어려울 수도 있는(?) 부분입니다.

저는 이전부터 만들고 싶었던 모든것을 리뷰해 정보의 비대칭성을 개선 하는 서비스를 주제로 잡았습니다.

서비스의 이름은 직관적으로 review_all 이라고 하겠습니다.

글을 읽으며 같은 서비스를 만들어도 좋고, 다른 서비스를 만들어가도 좋습니다.

파이썬 설치

자연어 처리를 하기 위해선 파이썬을 설치해야 합니다.

아래 사이트에 접속해 파이썬을 설치해줍니다.

Django 프로젝트 생성

django project를 생성하기 위해 python에 django를 설치해줍니다.

$ python -m pip install Django

django project를 생성해줍니다.

$ django-admin startproject django_practice

패키지 버전 관리(Poetry)

파이썬 패키지 버전 관리는 poetry를 사용해서 진행합니다.

아래 문서를 보고 poetry install을 진행합니다.

poetry install이 완료되었으면 poetry init 명령어를 실행해 pyproject.toml 파일을 생해줍니다.

새로 생성된 pyproject.toml에는 django package가 포함되어있지 않으니 django를 추가합니다.

$ poetry add django

django+drf 조합을 사용할 예정이기 때문에 drf도 미리 설치해줍니다.

poetry add djangorestframework

settings.py -> INSTALLED_APPS에 rest_framework를 추가해 줍니다.

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
]

poetry의 python virtualenv에 들어가려면 다음 명령어를 입력하면 됩니다. poetry shell

Reviews 앱 생성

review_all은 크게 3가지 모델로 구성할 예정입니다.

모델: 일반적으로 database의 table과 연결되며, 데이터의 구조와 동작을 표현합니다.

  1. 리뷰할 item들을 그룹화한 category
  2. 리뷰할 item들을 저장하는 item
  3. 리뷰를 저장하는 review

먼저 reviews앱을 생성해줍니다.

python3 manage.py startapp reviews

settings.py -> INSTALLED_APPS에 방금 생성한 review를 추가해 줍니다.

이제 reviews/models.py에 각 모델을 생성합니다.

from django.db import models
from django.contrib.auth.models import User

class Category(models.Model):
name = models.CharField(max_length=100)

def __str__(self):
return self.name


class Item(models.Model):
name = models.CharField(max_length=100)
category = models.ForeignKey(Category, on_delete=models.CASCADE, related_name='items')
description = models.TextField(null=True, blank=True)
image = models.ImageField(upload_to='images/', null=True)
date = models.DateTimeField(auto_now_add=True)

def __str__(self):
return self.name


class Review(models.Model):
item = models.ForeignKey(Item, on_delete=models.CASCADE, related_name='reviews')
context = models.TextField()
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='reviews')

def __str__(self):
return self.name

이렇게 django+drf 프로젝트의 생성, 모델 작성까지 빠르게 진행했습니다.

다음 시간엔 testcode를 작성하고 api를 생성해보도록 하겠습니다.

--

--