본문으로 건너뛰기

버그 제보

이상한 점을 알려 주시면 고칠게요. 지금 보고 있는 페이지와 브라우저 정보가 함께 담겨요.

페이지:

Backend

Django 시작하기와 MTV 패턴

작성 2026. 10. 13.추가
목차6개 항목

Django 프로젝트는 여러 앱(app)의 묶음이고, 각 앱은 MTV 패턴에 따라 데이터(Model), 화면(Template), 처리 로직(View)을 나눠 갖는다.

설치와 프로젝트 생성

python -m venv venv && source venv/bin/activate   # 가상환경 권장
pip install django                 # 특정 버전: pip install "django==5.2.*" (LTS)
python -m django --version
 
django-admin startproject firstpjt .   # 현재 폴더에 프로젝트 생성
python manage.py runserver             # http://127.0.0.1:8000
  • Django 6.x는 Python 3.12 이상이 필요하다. Python 3.10·3.11 환경이라면 5.2 LTS를 쓴다.
  • 프로젝트 이름에 django, test, class처럼 Python·Django가 쓰는 이름이나 하이픈(-)은 쓸 수 없다.
  • 개발 서버는 코드를 저장하면 자동으로 다시 로드된다. 단, 새 파일 추가 등 일부 변경은 재시작이 필요할 수 있다.
  • 가상환경 폴더나 db.sqlite3, __pycache__ 등은 .gitignore로 버전 관리에서 제외한다.

프로젝트 구조

파일역할
manage.py프로젝트와 상호작용하는 커맨드라인 유틸리티
settings.py앱 등록, DB, 템플릿, 언어·시간대 등 모든 설정
urls.pyURL과 view의 연결
wsgi.py / asgi.py동기(WSGI) / 비동기(ASGI) 웹 서버와 Django를 연결하는 진입점
__init__.py이 폴더를 Python 패키지로 인식시킴

앱 생성과 등록

python manage.py startapp articles   # 앱 이름은 보통 복수형
# settings.py: 반드시 "앱 생성 → 등록" 순서
INSTALLED_APPS = [
    # 1. Local apps
    'articles',
    # 2. Third party apps
    # 3. Django apps
    'django.contrib.admin',
    # ... auth, contenttypes, sessions, messages, staticfiles
]
앱 파일역할
models.py, views.pyMTV의 Model·View (아래 표)
admin.py관리자 페이지 등록
apps.py앱 정보 (거의 수정하지 않음)
tests.py테스트 코드

프로젝트와 앱의 관계: 프로젝트는 여러 앱의 집합이고, 앱은 보통 하나의 역할·기능 단위로 만든다. 잘 만든 앱은 다른 프로젝트에서 재사용할 수도 있다.

MTV 패턴

Django 기본 개발 흐름

MTVMVC 대응파일하는 일
ModelModelmodels.py데이터를 어떤 형태로 저장할지 정의하고 DB 기록을 관리한다. ORM 덕분에 SQL 없이 Python으로 다룬다
TemplateViewtemplates/*.html화면을 어떻게 보여 줄지 정한다. HTML + DTL
ViewControllerviews.py요청을 받아 Model로 데이터를 처리하고 Template에 렌더링을 맡긴다
URLconf(라우터)urls.py어떤 URL 요청을 어떤 view로 보낼지 정한다. 2.0부터 정규식 url() 대신 path()를 쓴다

기본 설정

# settings.py
LANGUAGE_CODE = 'ko-kr'   # 번역 언어 (USE_I18N = True 여야 적용)
TIME_ZONE = 'Asia/Seoul'  # 표시 시간대
USE_I18N = True           # 번역 시스템 사용
USE_TZ = True             # 시간대 인식(aware) datetime 사용. DB에는 UTC로 저장

과거 설정 파일에 있던 USE_L10N(지역화 형식)은 Django 4.0부터 기본값이 True가 되며 deprecated되었고 5.0에서 제거되었다. 더 이상 설정하지 않는다.

핵심 정리

  • startproject → startapp → INSTALLED_APPS 등록 → runserver.
  • Model = 데이터, Template = 화면, View = 처리, URLconf = 연결.

댓글

GitHub 계정으로 댓글을 남길 수 있어요.