모든 장고 프로젝트는 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 기능을 쉽게 구현할 수 있을 뿐만 아니라 관리자 페이지, 입력 폼 등도 쉽게 만들 수 있다.
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 추가 !
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라는 메뉴도 생겼다.
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 장고+부트스트랩 파이썬 웹 개발의 정석 도서링크