장고(django) 프로젝트에 마스터 데이터 넣기

2019-06-05

장고(django) 프로젝트에서 필요한 마스터 데이터 또는 테스트 데이터를 넣는 방법(data-seed)에 관해서 알아보겠습니다.

개요

일반적으로 웹 서비스를 개발하다보면 초기에 기본적으로 세팅이 필요한 마스터 데이터 또는 테스트 데이터가 필요합니다. 이 블로그에서는 장고(django) 프로젝트에서 fixtures을 이용하여 마스터 데이터를 생성하는 방법에 대해서 알아보겠습니다.

이 블로그 포스트에 소개되는 소스코드는 github에 공개되어 있습니다. 아래에 링크를 참고하시기 바랍니다.

장고(django) 프로젝트 준비

이전 블로그 시리즈에서 장고(django) 프로젝트를 사용하는 방법에 대해서 설명하였습니다. 장고(django)를 사용하여 프로젝트를 구성하는 방법에 대한 자세한 내용은 아래에 링크를 통해 확인하시기 바랍니다.

이 블로그에서는 장고(django) 설치와 프로젝트 설정등에 대해서는 설명하지 않도록 하겠습니다. 간단하게 프로젝트가 진행될 수준으로만 설명하겠습니다.

아래에 명령어를 통해 장고(django) 프로젝트를 생성합니다.

django-admin startproject django_jwt

아래에 블로그를 참고하여 데이터베이스 연동 및 테이블을 생성합니다.

데이터베이스 연동이 완료되었다면 아래에 명령어를 통해 관리자(superuser)를 생성합니다.

python manage.py createsuperuser

아래에 블로그를 참고하여 Blog 장고(django) 앱(App)과 Post 모델(Model)을 생성합니다.

마스터 데이터 준비

위에 장고(django) 프로젝트 과정을 진행하면 blog/models.py에 아래와 같은 내용을 확인할 수 있습니다.

from django.db import models
from django.utils import timezone


class Post(models.Model):
    author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
    title = models.CharField(max_length=100)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    published_at = models.DateTimeField(blank=True, null=True)

    def publish(self):
        self.published_at = timezone.now()
        self.save()

    def __str__(self):
        return self.title

우리는 이 모델(Models)에 맞는 마스터 데이터(Master data)를 준비하고 데이터를 추가(Seed)할 것입니다. blog/fixtures/posts-data.json 파일을 생성하고 아래와 같이 추가합니다.

[
  {
    "model": "blog.post",
    "fields": {
      "author": 1,
      "title": "test2",
      "content": "test2",
      "created_at": "2019-06-04T15:43:29.899",
      "updated_at": "2019-06-04T15:43:29.899",
      "published_at": "2019-06-04T15:43:28"
    }
  },
  {
    "model": "blog.post",
    "fields": {
      "author": 1,
      "title": "test1",
      "content": "test1\r\n\r\ntest1",
      "created_at": "2019-06-04T15:43:19.760",
      "updated_at": "2019-06-04T15:43:19.760",
      "published_at": "2019-06-04T15:43:18"
    }
  }
]

이 json 파일을 보면 알 수 있듯이 우리는 두 개의 테스트 데이터를 추가할 예정입니다.

마스터 데이터 넣기(Data Seed)

아래에 명령어를 통해 우리가 만든 데이터 시드(Data Seed)를 데이터베이스에 넣습니다.

python manage.py loaddata blog/fixtures/posts-data.json

확인

데이터베이스 툴을 이용하여 데이터가 잘 들어갔는지 확인해 봅니다.

장고(django) 마스터 데이터 추가(django data seed) - 데이터베이스 툴을 이용한 데이터 확인

물론, 장고(django)의 관리자 화면을 통해서도 확인이 가능합니다. 아래에 장고(django) 명령어로 테스트 서버를 실행 시킵니다.

python manage.py runserver

그리고 관리자 페이지의 URL(http://127.0.0.1:8000/admin)에 접속하여 추가된 데이터를 확인할 수 있습니다.

장고(django) 마스터 데이터 추가(django data seed) - 장고(django) 관리자 화면을 이용한 데이터 확인

완료

이것으로 장고(django)의 마스터 데이터 추가(Data seed)에 대해서 알아보았습니다. 이제 장고(django) 프로젝트를 진행할 때, 마스터 데이터 또는 테스터 데이터를 미리 준비할 수 있게 되었습니다!

책 홍보

저도 블로그를 시작한지 1년만에...책을 다 써봅니다...인생에서 이런 날도 오는군요...타국에서 책 출판도 할 수 있고, 참 좋은 세상입니다.

이번에 쓴 책은 스무디 한 잔 마시며 끝내는 React Native입니다. 다양한 예제를 통해 리액트 네이티브를 공부할 수 있도록 구성해 보았습니다. 또한 설치부터 배포까지 실전에서도 사용할 수 있는 내용들을 담고 있습니다.

아래 링크를 통해 제가 쓴 책을 구매하실 수 있습니다.
많은 분들에게 도움이 되면 좋겠네요.
스무디 한 잔 마시며 끝내는 React Native React Native로 실전 스마트폰 앱 만들기
Buy me a coffeeBuy me a coffee
Posts