라이브러리/Django

[Django] 게시글 애플리케이션 생성

쑤야뚜야 2022. 5. 14. 05:32

1. 애플리케이션 생성

 

상위 디렉토리 아래 애플리케이션 생성

python manage.py startapp blog

blog 디렉터리 생성된 후 폴더 상태는 아래와 같을 것입니다.

    myPythonSite
    ├── mysite
    |       __init__.py
    |       settings.py
    |       urls.py
    |       wsgi.py
    ├── manage.py
    ├── polls
    └── blog
        ├── migrations
        |       __init__.py
        ├── __init__.py
        ├── admin.py
        ├── models.py
        ├── tests.py
        └── views.py

 

2. settings.py에 추가

생성한 애플리케이션을 사용하기 위해서는 장고에 알려야 합니다.

이 역할을 하는 파일이 mysite/settings.py입니다.

이 파일 안의 INSTALLED_APPS에 'blog'를 추가합니다.

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'polls.apps.PollsConfig',
    'blog', 
]

 

3. 블로그 글 모델 만들기

blog/models.py 파일안에 모든 내용을 삭제 후 아래 코드를 추가하세요.

# Post객체(클래스)는 글을 작성하는 역할을 할 예정입니다.

from django.conf import settings
from django.db import models
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)
    published_date = models.DateTimeField(
            blank=True, null=True)

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

    def __str__(self):
        return self.title

 

4. 모델을 위한 테이블 생성

데이터베이스에 위에서 생성한 Post 모델을 추가하기 위해 아래의 명령어를 입력합니다.

아래 명령어는 데이터베이스에 반영할 수 있도록 마이그레이션 파일을 준비하는 명령어입니다.

python manage.py makemigrations blog

 

마이그레이션 파일이 준비되었으니, 아래 명령어를 입력해 실제 데이터베이스에 모델을 반영합니다.

python manage.py migrate blog

 

5. 확인

admin 페이지에 들어가서 글을 작성할 수 있는 post가 생성되었는지 확인합니다.

post에 들어가면 직접 글을 작성할 수 있습니다.