개발환경 구축과 Django 프로젝트 시작
처음 Django를 설치하고 프로젝트를 시작할 때,
어디서부터 손대야 할지 막막하셨죠?
이 글 하나면 OK! 🔧
안녕하세요, 여러분! 😄
오늘은 여러분이 Django라는 강력한 웹 프레임워크를 사용해 첫 프로젝트를 시작할 수 있도록 개발환경을 세팅하고, Django 프로젝트를 만드는 첫걸음을 함께 해보려 해요.
이 글은 단순히 코드를 나열하는 튜토리얼이 아니라, 왜 그렇게 해야 하는지까지도 친절히 설명할 테니, 걱정은 접어두시고 커피 한잔과 함께 따라와 주세요! ☕
특히 Python 기초만 알고 있어도 충분히 이해할 수 있게 구성되어 있어, Django 입문에 완벽한 가이드가 될 거예요.
목차
1. 가상환경이란? 왜 필요한가요?
처음 Django를 공부하거나 개발 프로젝트를 시작할 때 가장 먼저 듣게 되는 단어가 바로 가상환경(virtual environment)입니다. 근데, 왜 굳이 이런 걸 써야 할까요? 🤔
그냥 파이썬 깔고 바로 쓰면 되는 거 아닌가요?
사실, 간단한 스크립트나 학습용 코드에는 크게 상관이 없을 수 있어요.
하지만 프로젝트마다 사용하는 라이브러리 버전이 다르거나 충돌이 발생하는 상황에서는 이야기가 달라집니다.
예를 들어, 프로젝트 A에서는 Django 3.2를, 프로젝트 B에서는 Django 4.0을 쓴다고 해보죠.
이런 경우, 시스템 전체에 Django를 설치했다면 서로 충돌이 날 수밖에 없어요.
💡 가상환경을 쓰면 좋은 점!
- 프로젝트마다 독립된 환경 제공 → 충돌 방지
- 불필요한 시스템 오염 방지 → 유지보수 용이
- 협업 시, 환경 일관성 유지 → 배포도 쉬움
📌 실제로 어떻게 동작하나요?
가상환경은 단순히 파이썬 인터프리터와 라이브러리 디렉토리를 복사해서 독립된 환경으로 만들어 주는 거예요.
우리가 만든 가상환경 안에서는 시스템에 설치된 다른 라이브러리와 상관없이, 내가 원하는 버전만 설치해서 쓸 수 있죠.
🧪 예시로 알아보는 상황
항목 | 가상환경 없음 | 가상환경 사용 |
---|---|---|
Django 버전 | 시스템 전역에 하나만 존재 | 프로젝트마다 다르게 가능 |
라이브러리 충돌 | 다른 프로젝트 영향 가능 | 서로 독립적 |
배포 환경 | 패키지 충돌로 실패할 수 있음 | 확실한 환경 재현 가능 |
가상환경에 대해 좀더 알아보실 분들은 아래 포스트를 참고해주세요
파이썬 가상환경(venv, virtualenv)으로 프로젝트 환경을 깔끔하게 관리하는 법
파이썬 가상환경(venv, virtualenv)으로 프로젝트 환경을 깔끔하게 관리하는 법프로젝트마다 패키지 버전이 달라서 자꾸 충돌난다면? 파이썬 가상환경으로 환경관리를 시작해보세요! 🧪 안녕하
firstcoding.net
이제 감이 오셨죠? 😀
다음 글에서는 가상환경을 직접 만들고 Django를 설치하는 실습을 해볼게요!
명령어 한 줄 한 줄, 왜 그런지까지 설명하며 알려드릴게요.
바로 다음 단계에서 만나죠!
2. 가상환경 만들기와 Django 설치하기
이번에는 실제로 가상환경을 만들고, Django를 설치하는 과정을 하나씩 해보겠습니다.
윈도우 사용자 기준으로 설명하지만, macOS나 리눅스도 거의 동일해요.
다만 경로나 명령어가 조금 다를 수 있으니 참고만 해주세요.
⚙️ Step-by-step: 가상환경 만들기
- 프로젝트를 위한 디렉토리를 만듭니다.
- CLI 환경에서 아래 코드 실행
mkdir my_django_project cd my_django_project
- 가상환경을 생성합니다.
venv
는 파이썬 기본 제공 가상환경 툴입니다.python -m venv venv
- 가상환경을 활성화합니다.
- Windows:
venv\Scripts\activate
- macOS/Linux:
source venv/bin/activate
- Windows:
🎉 명령어를 실행한 후, 프롬프트 앞에 (venv)
가 붙으면 성공적으로 가상환경에 들어온 것입니다!
🌐 Django 설치하기
이제 본격적으로 Django를 설치해볼게요.
pip는 Python의 패키지 관리자로, Django도 pip를 통해 간단히 설치할 수 있어요.
pip install django
설치가 완료되면 다음과 같이 버전을 확인할 수 있습니다.
django-admin --version
💡 Tip: requirements.txt 만들기
앞으로 협업하거나 서버에 배포할 땐 requirements.txt
파일이 꼭 필요해요.
지금 설치된 패키지를 저장해두면 나중에 pip install -r requirements.txt 명령으로 똑같이 설치할 수 있죠!
pip freeze > requirements.txt
📎 설치 요약 정리
단계 | 명령어 |
---|---|
1. 디렉토리 생성 | mkdir my_django_project |
2. 가상환경 생성 | python -m venv venv |
3. 가상환경 활성화 | venv\Scripts\activate |
4. Django 설치 | pip install django |
이제 준비는 끝났습니다. 🎉
다음 단계에서는 Django 프로젝트를 생성하고 실행하는 법을 배워볼 거예요.
준비되셨죠? 바로 다음 STEP에서 만나봐요!
3. Django 프로젝트 생성과 폴더 구조 이해
이제 드디어 본격적인 Django 프로젝트를 시작할 차례입니다!
가상환경도 만들고 Django도 설치했으니, 첫 프로젝트를 만들어볼까요?
이 단계에서는 django-admin이라는 명령어를 사용해서 새로운 프로젝트를 생성합니다.
🚀 django-admin startproject 명령어 사용하기
django-admin startproject config .
위 명령어에서 config
는 프로젝트 이름입니다.
원하는 이름으로 바꿔도 돼요! 뒤에 붙은 .
(점)은 “현재 디렉토리에 바로 생성하겠다”는 뜻인데, 폴더 구조가 한 번 더 중첩되는 걸 막아줘요.
💡 점(.)을 안 붙이면 어떻게 되나요?
config/config/
처럼 디렉토리가 두 겹이 돼서 조금 헷갈릴 수 있어요.
.
을 붙여주면 루트 디렉토리에 필요한 파일만 깔끔하게 생성됩니다!
📂 Django 프로젝트 기본 구조 설명
명령어를 실행하면 다음과 같은 디렉토리 구조가 만들어집니다.
my_django_project/
├── manage.py
├── config/
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ ├── asgi.py
│ └── wsgi.py
파일/디렉토리 | 설명 |
---|---|
manage.py |
Django 명령어를 실행할 때 사용하는 메인 스크립트 (예: runserver, migrate) |
settings.py |
프로젝트의 모든 설정 정보 (DB, 앱 등록, 경로 등) |
urls.py |
URL 라우팅을 담당하는 곳, 어떤 URL로 어떤 기능을 실행할지 지정 |
wsgi.py / asgi.py |
웹 서버와 연결하기 위한 인터페이스 스크립트 (배포 시 사용) |
VSCode 실행
아직은 생소한 파일이 많을 수 있지만, 앞으로 차근차근 다룰 거니까 걱정 마세요. 😊
이제 다음 단계에서는 manage.py를 이용해 Django 개발 서버를 실행하고, 환영 페이지를 띄워보는 실습을 진행할게요!
4. 개발 서버 실행하고 환영 페이지 보기
지금까지 프로젝트를 생성했고, 폴더 구조도 확인했죠?
이제 실제로 Django가 어떻게 동작하는지, 개발 서버를 실행해보고 웹 브라우저에서 결과를 확인해볼 시간이에요.
딱 10초만에 Django의 기본 환영 페이지를 만나볼 수 있어요! 🌈
▶️ 개발 서버 실행하기
가상환경이 활성화되어 있고, Django 프로젝트 디렉토리 안에 있다면 아래 명령어만 입력하면 됩니다.
python manage.py runserver
✅ 명령어 실행 후, 아래와 같은 메시지가 보이면 성공적으로 서버가 실행된 거예요!
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
April 17, 2025 - 22:30:02
Django version 4.x, using settings 'config.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
🌐 Django 환영 페이지 보기
웹 브라우저를 열고 주소창에 다음을 입력해보세요:
http://127.0.0.1:8000/
이 주소는 로컬호스트(localhost), 즉 여러분의 컴퓨터를 의미합니다.
성공적으로 실행되었다면, Django의 멋진 초록색 체크 표시가 있는 환영 화면을 보게 될 거예요! 🎉
🤔 에러가 난다면?
- 가상환경이 활성화되지 않았을 수 있어요.
venv\Scripts\activate
또는source venv/bin/activate
를 다시 확인!-
manage.py
파일이 있는 디렉토리에서 실행했는지 확인!
📌 Django 개발 서버의 특징
항목 | 설명 |
---|---|
자동 감지 | 코드 수정 시 서버 재시작 없이 자동 반영 |
기본 포트 | 8000번 포트를 사용 (--port 옵션으로 변경 가능) |
개발 전용 | 운영 환경에서는 사용 ❌ (보안상 취약함) |
어떠셨나요?
처음으로 브라우저에서 Django 프로젝트가 돌아가는 걸 확인하면 꽤 뿌듯하실 거예요!
다음은 프로젝트 내부 파일들 — 특히 settings.py
, urls.py
— 들의 역할을 자세히 살펴보겠습니다. 🛠️
5. 프로젝트 주요 파일 설명 (settings.py, urls.py 등)
Django 프로젝트를 만들고 서버도 돌려봤는데, 폴더 안에 있는 파일들... 솔직히 처음 보면 좀 겁나죠? 😅
settings.py
, urls.py
, wsgi.py
, asgi.py
등등… 이름은 많은데 도대체 다 무슨 역할을 하는 걸까요?
이번에는 이 중요한 파일들을 하나하나 살펴보면서, Django가 어떤 구조로 움직이는지 확실히 이해해보는 시간을 가질게요. 🧠
⚙️ settings.py – 프로젝트 설정의 본부
Django에서 가장 중요한 파일 중 하나예요.
이름 그대로 프로젝트 전반의 설정을 담당합니다.
데이터베이스 연결부터 앱 등록, 보안 설정까지 모두 여기에 있어요.
- INSTALLED_APPS – 사용할 앱 목록 (예: admin, auth 등)
- MIDDLEWARE – 요청/응답을 가로채는 중간 처리기 리스트
- DATABASES – 어떤 DB를 쓸지 (기본은 SQLite)
- STATIC_URL – 정적 파일(CSS, JS 등)의 기본 경로
🌐 urls.py – URL과 View를 연결해주는 라우터
클라이언트가 어떤 URL로 접근했을 때 어떤 페이지나 기능을 보여줄지를 설정하는 파일입니다.
즉, URL ↔ View 함수의 연결고리 역할을 하죠.
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls),
]
위 코드는 /admin/
경로로 접속하면 Django의 관리자 페이지로 이동하도록 설정한 예입니다.
앞으로 여기에 직접 만든 뷰 함수들을 추가해가며 프로젝트를 확장할 거예요!
🌐 wsgi.py & asgi.py – 서버와 Django의 연결고리
이 두 파일은 웹 서버(Gunicorn, Daphne 등)가 Django 앱과 통신할 수 있도록 해주는 인터페이스 스크립트입니다. 단, 개발 단계에서는 거의 사용할 일이 없어요. 프로젝트를 실제 배포할 때 사용된다고 기억만 해두시면 충분합니다!
파일 | 설명 |
---|---|
wsgi.py | 동기 방식 배포용 (예: Gunicorn) |
asgi.py | 비동기 웹 서버용 (예: Daphne, Uvicorn) |
이처럼 Django 프로젝트의 각 파일은 서로 역할을 나누어 구조적으로 움직입니다.
각각을 이해하고 있으면 앞으로 앱 개발 시 어떤 파일을 수정해야 하는지, 어디를 먼저 살펴봐야 하는지 훨씬 수월해질 거예요.
6. 자주 묻는 질문 및 초보자 팁 ✨
처음 Django를 접할 때 헷갈리는 부분이 정말 많죠?
특히 에러 메시지가 뜨면 ‘뭐가 뭔지 모르겠어!’ 하고 당황하기 쉬워요.
그래서 이 섹션에서는 실제 수강생이나 독자들이 자주 물어봤던 질문과, 제가 직접 겪으며 깨달았던 꿀팁들을 정리해드릴게요.
“아 이거 나만 몰랐던 거 아니었구나!” 싶은 순간이 올지도 몰라요. 😅
❓ 자주 묻는 질문 (FAQ)
- Q. 가상환경은 프로젝트마다 꼭 만들어야 하나요?
네, 무조건 만드는 걸 추천드려요!
그래야 라이브러리 버전 충돌을 막을 수 있고, 협업 시에도 동일한 환경을 유지할 수 있어요. - Q. pip install이 안 될 때는 어떻게 해야 하나요?
인터넷 연결 상태를 먼저 확인해보세요.
그리고python -m pip install --upgrade pip
로 pip 버전을 최신으로 유지하는 것도 중요해요. - Q. runserver 했는데 접속이 안 돼요!
가상환경이 활성화되어 있는지,manage.py
가 있는 디렉토리에서 명령어를 실행했는지 다시 확인해보세요. - Q. Django 버전은 어떤 게 좋아요?
최신 버전을 사용하는 것이 보안과 성능 면에서 좋아요.
다만, 공식 문서에서 권장하는 LTS 버전을 사용하는 것도 안정적인 선택이에요.
💡 실수 방지용 초보자 꿀팁!
- 매번 서버를 끄고 켤 필요 없어요!
Django는 코드 변경 사항을 자동으로 감지해서 반영해줘요.
서버만 켜두면 실시간으로 확인할 수 있어요. - settings.py는 손댈 땐 복사본부터!
혹시 오류 나면 되돌릴 수 있도록 settings.py 파일을 백업해두세요. - 에러 메시지를 잘 읽자!
Django는 에러 메시지를 정말 친절하게 써줘요.
천천히 읽으면 해결 실마리가 보입니다. - pyenv나 poetry 등 도구도 나중에 배워보자!
파이썬 프로젝트를 더 잘 관리할 수 있는 도구들이에요.
초보 땐 몰라도 되지만, 나중엔 꼭 도움이 될 거예요.
처음부터 완벽할 필요는 없어요. 저도 Django 처음 시작할 땐 runserver 한 줄 치는 것도 긴장했거든요. 😅
중요한 건 에러를 두려워하지 않고 천천히 쌓아가는 태도입니다.
이제 여러분도 Django의 첫 문을 열었으니, 계속해서 앱을 만들고 실습하면서 자신감을 키워보세요!
Django 입문의 첫 발걸음을 축하합니다! 🎉
여기까지 오신 여러분, 정말 수고 많으셨어요. 👏
처음에는 생소했던 가상환경 생성부터 Django 설치, 프로젝트 구조 이해, 그리고 서버 실행까지 모두 직접 해보셨습니다.
처음 접하면 낯설고 어색했던 단계들이 이제는 조금은 익숙해졌을 거예요.
Django는 강력하고 유연한 웹 프레임워크입니다.
아직은 단순한 “Hello Django” 단계지만, 앞으로 여러분은 이걸 기반으로 블로그, 게시판, 로그인 시스템, API 서버까지 만들 수 있어요.
이제 정말 웹 개발자가 되는 길이 시작된 것이죠.
다음 단계로는 앱 생성 및 라우팅, 데이터베이스 모델 만들기, CRUD 구현, 템플릿 시스템 등으로 나아가면 됩니다.
이 블로그 시리즈에서도 그 모든 과정들을 차근차근 함께 걸어갈 예정이니, 즐겁게 따라와 주세요!
🌱 작은 성공이 쌓이면, 어느새 성장합니다
오늘처럼 하나씩 직접 따라해보고 작은 성취감을 느껴보세요.
그게 쌓이면 진짜 실력이 됩니다.
개발은 재능보다 꾸준함이 더 중요한 분야랍니다. 저도 그랬고요. 😉
여러분의 Django 첫 걸음을 응원합니다! 🚀
다음 글에서는 앱 생성과 URL 연결로 한 걸음 더 나아가볼게요.
'Python > Python 웹프로그래밍' 카테고리의 다른 글
[Django-01] 웹 개발 기초와 Django 프레임워크 개요 (0) | 2025.04.18 |
---|---|
[FastAPI-⑧] 파이썬 FastAPI 실전 프로젝트 구현 (2) – 기능 보완 및 마무리 (1) | 2025.04.16 |
[FastAPI-⑦] 파이썬 FastAPI 실전 프로젝트 (1) – 블로그 API/Todo API 설계 및 구현 (0) | 2025.04.16 |
[FastAPI-⑥] 파이썬 FastAPI 예외 처리, 테스트 및 프로젝트 구조화 (0) | 2025.04.16 |
[FastAPI-⑤] 파이썬 FastAPI 고급 ORM – 관계 모델링과 다중 테이블 연동 (0) | 2025.04.16 |