📘 Chapter 03. [Django 블로그 프로젝트] 쿠키와 세션, 로그인 기능 시작하기
1️⃣ 블로그 프로젝트 기본 설정
📌 작업 폴더 생성 및 가상환경 세팅
mkdir blog # 블로그 프로젝트 폴더 생성
pyenv virtualenv 3.12.1 oz_blog # 가상환경 생성
pyenv local oz_blog # 해당 폴더에 가상환경 적용
📌 Poetry 초기화 및 Django 설치
poetry init # pyproject.toml 생성
poetry add django # Django 설치
📌 Django 프로젝트 시작
django-admin startproject config . # 현재 위치에 설정 파일 생성
📌 Python Interpreter 및 Django 설정 (PyCharm 기준)
- Python Interpreter가 생성한 가상환경과 연결되었는지 확인
- Django Framework 지원 설정 확인 (Languages & Frameworks > Django)
2️⃣ 블로그 App 생성 및 설정
📌 App 생성 및 설정 등록
python manage.py startapp blog
📌 settings.py 설정 변경
# config/settings.py
DJANGO_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
OWN_APPS = [
'blog',
]
THIRD_PARTY_APPS = [
'django_extensions'
]
INSTALLED_APPS = DJANGO_APPS + OWN_APPS + THIRD_PARTY_APPS
📌 개발 편의 도구 설치
poetry add ipython
poetry add django-extensions
3️⃣ 서버 실행 및 마이그레이션
📌 서버 실행 확인
python manage.py runserver
# 브라우저에서 127.0.0.1:8000 으로 접속
📌 DB 마이그레이션 초기화
python manage.py migrate
💡 Django에서 기본으로 사용하는 인증/세션 등의 테이블이 생성됨
4️⃣ Blog 모델 설계 및 생성
📌 블로그에 필요한 요소 설계
- 제목(title)
- 본문(content)
- 작성일자(created_at)
- 수정일자(updated_at)
- 카테고리(category)
📌 models.py 작성 예시
from django.db import models
class Blog(models.Model):
CATEGORY_CHOICES = (
('free', '자유'),
('travle', '여행'),
('cat', '고양이'),
('dog', '강아지')
)
category = models.CharField('카테고리', max_length=10, choices=CATEGORY_CHOICES)
title = models.CharField('제목', max_length=100)
content = models.TextField('본문')
created_at = models.DateTimeField('작성일자', auto_now_add=True)
updated_at = models.DateTimeField('작성일자', auto_now=True)
📌 마이그레이션 파일 생성 및 반영
python manage.py makemigrations
python manage.py migrate
📌 DB Browser for SQLite로 모델 확인
- db.sqlite3 파일을 열면 생성된 blog 테이블 확인 가능
✅ 마무리 체크리스트
☑️ 가상환경 생성 및 Django 설치 완료
☑️ blog App 생성 및 settings.py에 등록
☑️ 서버 실행 테스트 완료
☑️ 모델 생성 및 마이그레이션 완료
☑️ SQLite로 모델 생성 여부 확인
🔜 다음 단계: 로그인 기능 구현 및 쿠키/세션 처리로 넘어가기!
💡 Poetry와 pyenv를 함께 사용하면 가상환경 관리가 훨씬 수월합니다. Django 개발은 가상환경 안에서만 진행해야 충돌 없이 관리할 수 있어요.