[Django] 프로젝트 안에 어플리케이션 만들기

2020. 6. 2. 05:32Python/Django

어플리케이션 생성

프로젝트 안에 원하는 어플리케이션을 만들기 위해서, 해당 프로젝트의 manage.py가 필요하다!

python manage.py startapp [만들고 싶은 APP 이름 ]

생성한 어플리케이션을 프로젝트에게 알리기

settings.py 속성 중 INSTALLED_APPS에 'blog', 즉 '만든 어플리케이션 이름'을 추가해주어야 한다. 프로젝트가 이를 알고 해당 어플리케이션을 실행할 수 있다. settings.py를 수정하기 전에 현재 경로가 어딘지 확인해야 한다. 프로젝트 안에 settings.py가 있기 때문에 다른 경로에서 아래 vi 커맨드를 입력하면 안된다. ★ django 기본 구조는 바뀌면 안된다. 기본구조를 이해해야한다.

예시) [ 프로젝트 이름 ]/settings.py

## 현재 경로 /blog 
vi settings.py

어플리케이션에서 사용할 객체는 models.py 안에!

게시판을 만들 때, 중요한 객체 중 하나인 Post (게시글)를 정의해보자.

from django.db import models ## models.py에 거의 기본으로 import된다.
from django.conf import settings
from django.utils import timezone

class Post(models.Model):
    author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    title = models.CharField(max_length=200)
    text = models.TextField()
    created_date = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return self.title

객체에 대한 필드 타입은 Django 문서에 기술되어있어서 모델 정의할 때 필요한 필드 타입을 여기에서 찾아보고 정하면 좋다. https://docs.djangoproject.com/en/2.0/ref/models/fields/#field-types

 

Model field reference | Django documentation | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

데이터베이스에 모델에서 정의한 객체를 위한 테이블 만들기

앞서 Django 프로젝트를 만들면서 생성된 manage.py로 해당 프로젝트를 migrate하여 데이터베이스를 만들었었다. 이제 해당 프로젝트의 데이터베이스에 models에 class로 정의한 객체를 위한 테이블을 만들어줘야 한다. 어플리케이션이 속해 있는 프로젝트의 manage.py로 어플리케이션에 대한 makemigration을 진행한다. ★ 이때 settings.py의 INSTALLED_APPS에 어플리케이션 추가하지 않았으면 에러나니까 주의!

python manage.py makemigrations [생성한 어플리케이션 이름]

그리고 앞서 어플리케이션을 생성하면 프로젝트에 알려야한다고 한 것과 비슷한 맥락으로, 프로젝트에게 model.py로 생성된 테이블을 알려주어야 한다.

python manage.py migrate [생성한 어플리케이션 이름]

웹서버를 실행해서 localhost:8000를 보면 이전과 다를게 없다. 여기까지 했을 때는 객체에 대한 테이블만 생성된 것이기 때문에!