ionic 3 앱 개발 (Django 모델설계) - [여행플랜/백엔드]

이전 내용

result-01

이제 프런트는 완성했습니다! API를 만들기 이전에 모델설계를 해보도록하겠습니다.

설치

1
C:\Users\wk647\Desktop\Tourplan_Django> pip install Django==1.11

django를 설치합니다. 저는 1.11버전을 사용했습니다.

프로젝트 생성 및 설정

1
2
C:\Users\wk647\Desktop\Tourplan_Django> mkdir src && cd src
C:\Users\wk647\Desktop\Tourplan_Django\src> django-admin startproject Tourplan .

src라는 폴더를 생성하고 해당 위치에 Tourplan이라는 프로젝트를 생성합니다.

1
2
C:\Users\wk647\Desktop\Tourplan_Django\src> python manage.py startapp Product
C:\Users\wk647\Desktop\Tourplan_Django\src> python manage.py createsuperuser

Product라는 애플리케이션을 만들고, 관리자 아이디를 만듭니다.

1
2
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

미디어와 관련된 모델을 만들기 위해 미디어 파일을 저장할 경로를 지정해주는 MEDIA_ROOT와 각 미디어 파일에 대한 url 경로인 MEDIA_URL를 설정해준다.

ID 이미지url 타이틀 서브타이틀
1 http://… Souel, Korea text
2 http://… Tokoy, Japan text
3 http://… text

위와 같은 테이블을 모델로 설계해보도록 하겠습니다.

Product/models.py

1
2
3
4
5
6
7
8
9
from django.db import models

class ProductList(models.Model):
    img_url      = models.ImageField(blank=True)
    title        = models.CharField(max_length=100)
    sub_title    = models.TextField()

    def __str__(self):
        return str(self.title)

id 필드는 설정하지 않아도 자동적으로 AutoField로 생성됩니다. 아래 같이 다른 방법으로도 id 필드를 추가할 수 있습니다.

id = models.AutoField(primary_key=True)

1
2
3
C:\Users\wk647\Desktop\Tourplan_Django\src> pip install pillow
C:\Users\wk647\Desktop\Tourplan_Django\src> python manage.py makemigrations
C:\Users\wk647\Desktop\Tourplan_Django\src> python manage.py migrate

라이브러리 설치 후 마이그레이션 명령을 실행시켜 DB를 생성합니다.

ImageField를 마이그레이션하기 위해서는 Python 이미지 라이브러리인 Pillow를 설치해야 합니다.

Product/admin.py

1
2
3
4
5
6
from .models import ProductList

class ProductListAdmin(admin.ModelAdmin):
    list_display = ('id', 'img_url', 'title')

admin.site.register(ProductList, ProductListAdmin)

관리자 페이지에서 해당 모델을 관리할 수 있도록 admin.py를 수정해줍시다.

1
C:\Users\wk647\Desktop\Tourplan_Django\src> python manage.py runserver

Django를 실행합니다.

admin-page-01

관리자 페이지에 로그인하게 되면, Product lists를 통해 아래 그림과 같이 이미지 파일을 추가할 수 있는 페이지를 볼 수 있습니다.

admin-page-02

Tourplan/urls.py

1
2
3
4
from django.conf import settings
from django.conf.urls.static import static

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Project 폴더에 urls.py에 이미지 url에 대한 urlpattern을 추가합니다.

image-page-02

이미지를 관리자 페이지에서 등록 후 아래와 같은 URL로 들어가면 해당 이미지를 불러올 수 있습니다.

http://localhost/media/[이미지파일명]

다음 내용