Django 설치와 프로젝트 구성 실습

Django 버전별 특징

각 메이저 버전의 핵심 차이는 비동기 처리 지원 여부입니다.

버전비동기 지원
Django 1.x미지원
Django 2.x미지원
Django 3.x 이상기본 내장 (async/await)

설치 방법

pip를 통한 설치

특정 버전을 명시하거나 최신 버전을 받을 수 있습니다.

# 최신 버전 설치
pip install django

# 특정 버전 고정 설치
pip install django==4.2.7

설치 시 주의사항

  • Python 인터프리터 경로와 버전을 정확히 파악할 것
  • 컴퓨터명, 프로젝트 경로, 파일명에 한글 미포함
  • Python과 Django 간 버전 호환성 확인
  • 프로젝트는 독립 폴더로 분리하여 관리

정상 설치 확인

세 가지 방법으로 검증할 수 있습니다.

  1. 터미널에서 django-admin --version 실행
  2. Python 설치 경로의 Scripts 폴더 내 django-admin.exe 존재 확인
  3. 다양한 Django 관리 명령어 사용 가능 여부 체크

프로젝트 생성: 미널 방식

새 프로젝트 만들기

django-admin startproject myproject

개발 서버 구동

프로젝트 폴더로 이동 후 실행합니다.

# 기본 주소 (127.0.0.1:8000)
python manage.py runserver

# 사용자 정의 포트
python manage.py runserver 127.0.0.1:9005

# 모든 인터페이스에 바인딩
python manage.py runserver 0.0.0.0:8080

프로젝트 생성: IDE 방식

PyCharm Professional에서 New Project → Django 선택 시 자동으로 가상환경 설정과 프로젝트 구조가 생성됩니다. 커뮤니티 에디션은 수동 설정이 필요합니다.

애플리케이션(App) 개념

Django에서 App은 기능 단위의 모듈입니다. 대학에 비유하면 프레임워크가 캠퍼스 인프라라면, App은 각각의 학과처럼 실제 업무를 수행하는 주체입니다.

App 생성 및 등록: 명령어 방식

# App 생성 (manage.py가 있는 경로에서)
python manage.py startapp blog

# 생성 후 settings.py에 등록 필수
INSTALLED_APPS = [
    'blog',           # 방식 1: App 이름만
    'blog.apps.BlogConfig',  # 방식 2: Config 클래스 명시
]

App 생성 및 등록: PyCharm 방식

Tools → Run manage.py Task → startapp polls 입력 후 동일하게 INSTALLED_APPS에 추가합니다.

프로트 디렉토리 구조

루트 프로젝트

myproject/                  # 프로젝트 루트
├── db.sqlite3             # 기본 SQLite 데이터베이스
├── manage.py               # Django CLI 진입점
└── myproject/              # 설정 패키지
    ├── __init__.py
    ├── settings.py         # 환경 설정 (핵심 수정 대상)
    ├── urls.py             # URL 라우팅 규칙
    ├── asgi.py             # ASGI 비동기 서버 진입점
    ├── wsgi.py             # WSGI 동기 서버 진입점
    └── __pycache__/        # 바이트코드 캐시

App 내부 구조

blog/                       # 애플리케이션 폴더
├── __init__.py
├── admin.py                # 관리자 대시보드 설정
├── apps.py                 # App 메타데이터
├── models.py               # 데이터베이스 스키마 정의
├── views.py                # 요청/응답 처리 로직
├── tests.py                # 테스트 코드
└── migrations/             # DB 마이그레이션 이력
    └── __init__.py

핵심 파일 역할 정리

파일역할수정 빈도
settings.pyDB, 미들웨어, 템플릿 등 전역 설정높음
urls.pyURL 패턴과 뷰 함수 매핑높음
models.pyORM 데이터 모델 정의높음
views.py비즈니스 로직, HTTP 응답 생성높음
admin.py관리자 페이지 모델 등록중간
wsgi.py / asgi.py서버 배포 진입점낮음

태그: Django python-web-framework SQLite asgi WSGI

6월 22일 17:39에 게시됨