장고 프로젝트에서 앱 개발하기

GURI·2022년 1월 16일
0

Django

목록 보기
2/2
post-thumbnail

📌 두 개의 앱 만들기

모든 장고 프로젝트는 1개 이상의 앱으로 구성된다.

: 특정한 기능을 수행하는 단위 모듈

2개의 앱 - 블로그 기능을 위한 blog 앱, 대문 페이지와 자기소개 페이지를 보여주기 위한 single_pages 앱을 만들 예정이다.
실행하기 전, 가상환경이 실행되고 있는지 확인 후 코드 작성

python manage.py startapp blog
python manage.py startapp single_pages

위 코드를 실행하면 파이참에 2개의 폴더가 생성되어 있고 각 폴더에는 admin.py, apps.py, models.py, test.py, views.py와 같은 파일들이 생성된다.
이처럼 앱은 독립된 파일들로 구성되어 독립된 기능을 한다.

📌 모델 만들기

장고의 장점 중 하나는 모델을 이용해 장고 웹 프레임워크 안에서 데이터베이스를 관리할 수 있다는 것이다. 파이썬만으로 CRUD 기능을 쉽게 구현할 수 있을 뿐만 아니라 관리자 페이지, 입력 폼 등도 쉽게 만들 수 있다.

Post 모델

blog/models.py

from django.db import models

# Create your models here.
class Post(models.Model):
    title = models.CharField(max_length = 30)
    content = models.TextField()
    created_at = models.DateTimeField()
    #author 추후 작성

do_it_django_prj/settings.py - 프로젝트에 생성한 앱 등록

# Application definition

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

아직 Post 모델은 파이썬 클래스로 존재한다. 이를 데이터베이스에 반영해야 실제 테이블이 생성된다.

  • 데이터베이스에 반영하기 위해
python manage.py makemigrations
  • 실제 데이터베이스에 모델을 적용하려면
python manage.py migrate


++ gitignore에 migration 추가 !

  • 왜 gitignore에 추가할까? = 왜 깃으로 관리하지 않을까
    • 개발하다 보면 models.py를 수정할 일이 많을 것이다. 그리고 최종 결과물만 서버에 적용
    • 그런데 모델 수정 내역을 일일이 기록하면 로컬 컴퓨터의 데이터베이스와 서버의 데이터베이스가 일치하지 않아 문제가 생길 수 있다.

blog/admin.py - 관리자 페이지에 Post 모델을 등록

from django.contrib import admin
from .models import Post

# Register your models here.
admin.site.register(Post)

BLOG라는 섹션이 생기고 그 아래에 Posts라는 메뉴도 생겼다.

Post 모델 수정

blog/models.py - 제목 형식 지정하는 함수 추가

class Post(models.Model):
    title = models.CharField(max_length = 30)
    content = models.TextField()
    created_at = models.DateTimeField()
    
    #제목나오도록 함수 생성
    def __str__(self):
	return f'[{self.pk}]{self.title}'

settings.py - 시간 서울 시간으로 변경

TIME_ZONE = 'Asia/Seoul'

자동으로 작성 시각과 수정 시각 저장하기 !

class Post(models.Model):
    title = models.CharField(max_length = 30)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    
    #제목나오도록 함수 생성
    def __str__(self):
	return f'[{self.pk}]{self.title}'

모델을 수정했으므로 다시 makemigrations로 장고에게 알려주고 migrate로 데이터베이스에 반영

python manage.py makemigrations
python manage.py migrate

'Do it 장고+부트스트랩 파이썬 웹 개발의 정석'을 통해 학습한 내용입니다.
Do it 장고+부트스트랩 파이썬 웹 개발의 정석 도서링크

profile
Done is better than Perfect.

0개의 댓글