💻 Django 프로젝트 세팅 완전 정복!
Django 웹 개발을 시작할 때 반드시 거쳐야 하는 프로젝트 초기 세팅 과정! 이 글에서는 Poetry를 활용한 가상환경 설정부터 템플릿, 정적파일(static), 미디어(media) 설정까지 한 번에 정리해드립니다.
✅ 1. 가상환경 구축 (with Poetry)
📌 왜 Poetry인가?
Poetry는 패키지 관리 + 가상환경 관리를 통합해서 제공하는 툴로, 복잡한 환경 설정 없이 깔끔하게 Python 프로젝트를 관리할 수 있습니다.
🛠️ 설정 순서
# 프로젝트 디렉토리 생성 및 진입
mkdir myproject
cd myproject
# Poetry 초기화 (pyproject.toml 생성)
poetry init # 대화형 입력 or 엔터로 기본 설정 진행
# Django 설치
poetry add django
# 가상환경 진입
poetry shell
👉 이후 Django 명령어들을 이 환경 안에서 사용할 수 있습니다.
✅ 2. Django 프로젝트 및 앱 구성
🔧 프로젝트 생성
django-admin startproject config . # 현재 디렉토리에 생성
🔨 앱 생성 (예: blog 앱)
python manage.py startapp blog
📁 폴더 구조 예시
myproject/
├── config/ # 전체 프로젝트 설정
│ ├── settings.py
├── blog/ # 기능별 앱
│ ├── views.py 등
├── pyproject.toml # Poetry 관리 파일
config는 Django 설정과 URL 경로를 담당하고, blog는 실제 기능을 구현하는 앱입니다.
✅ 3. templates 경로 설정하기
Django는 기본적으로 앱 내의 templates/ 폴더를 인식하지 않으므로, 전역 템플릿 경로를 지정해주는 게 좋습니다.
🔧 설정 방법
# config/settings.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR / 'templates'], # ✅ 여기에 추가
...
},
]
📁 프로젝트 루트에 templates/ 폴더를 만들고 HTML 파일을 넣으면 Django가 렌더링할 수 있습니다.
✅ 4. static 경로 설정하기 (CSS/JS 등)
정적 파일(static files)은 브라우저에 그대로 전달되는 CSS, JS, 이미지 등을 의미합니다.
🔧 설정 방법
# config/settings.py
STATIC_URL = '/static/'
STATICFILES_DIRS = [
BASE_DIR / 'static', # ✅ 정적 파일 경로 지정
]
📁 static/ 폴더를 생성하고 내부에 css/, js/, img/ 등의 디렉토리를 관리하면 됩니다.
🚨 실무에서는 collectstatic 명령어로 정적 파일을 한 곳에 모으는 과정도 필요합니다.
✅ 5. media 경로 설정하기 (업로드 파일)
사용자가 업로드하는 파일(예: 이미지, 문서 등)은 media 파일로 구분합니다.
🔧 설정 방법
# config/settings.py
MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / 'media' # ✅ 저장 경로
서버가 실행 중일 때, 아래처럼 urls.py에서 미디어 경로도 추가해줘야 합니다:
# config/urls.py
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
... # 기존 path 목록
]
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
📌 TIP:
- templates/는 화면을 꾸미는 HTML 파일
- static/은 꾸미는 데 필요한 CSS, JS, 이미지
- media/는 유저가 업로드하는 콘텐츠
이렇게 구성하면 Django 프로젝트의 뼈대를 제대로 갖춘 셈입니다! 💪
다음 단계에서는 Database 모델 정의와 FBV 뷰 구성, URL 연결 방식까지 이어집니다 → 계속 GO! 🚀
'기술블로그-Django편' 카테고리의 다른 글
🧩 Django Jinja 템플릿 완전 가이드 (0) | 2025.05.14 |
---|---|
🧱 Django Database Model 완전 정복 (0) | 2025.05.14 |
🔍 Django ORM Field Lookups 완벽 정리 (0) | 2025.05.14 |
🔍 Django ORM: get() vs filter() 차이점 완벽 정리 (0) | 2025.05.14 |
🔧 Django에서 HTML 폼으로 DELETE 요청 처리하기 — Middleware 활용법 (0) | 2025.05.14 |