Django 개발환경 구축
FastAPI 개발환경을 구축해보셨다면, Django 환경 구축도 매우 유사합니다. 가상환경 설정은 동일하고, 몇 가지 Django 특유의 도구들만 추가로 알아보면 됩니다.
1. 가상환경 생성 및 활성화
FastAPI와 동일한 방식으로 가상환경을 생성합니다.
# 프로젝트 디렉토리 생성
mkdir django-proj
cd django-proj
# 가상환경 생성
python -m venv venv
# 가상환경 활성화
venv\Scripts\activate # Windows
source venv/bin/activate # macOS/Linux
# 프롬프트에 (venv) 표시 확인 (프롬프트 설정에 따라 (venv)가 뜨지 않을 수도 있습니다.)
(venv) $
Note
웹서버는 거의 리눅스를 사용하기에, 리눅스 명령에 대해서도 익혀둘 필요가 있습니다.
2. Django 설치
django 팩키지 하나만 설치하면, 그 즉시 개발을 시작할 수 있습니다. ORM/세션/템플릿 등의 기능이 django 라이브러리 하나에서 모두 지원됩니다.
Note
FastAPI에서는 uvicorn을 통해 개발서버/실서버를 구동하며,
Django에서는 개발용 웹서버를 자체 제공하며, 실서비스에서는 FastAPI처럼 uvicorn 등을 사용합니다.
3. VSCode 설정
필수 확장 프로그램
- Python - Microsoft
- Django - Baptiste Darthenay
- SQLite Viewer - alexcvzz (Django는 기본적으로 SQLite 사용)
추천 확장 프로그램
- Black Formatter - 코드 포맷팅
- Django Templates - Django HTML 문법 하이라이팅
- Django Snippets - 코드 스니펫
VSCode 설정 파일 (.vscode/settings.json)
{
"python.linting.enabled": true,
"python.linting.pylintEnabled": true,
"python.formatting.provider": "black",
"python.linting.pylintArgs": [
"--load-plugins=pylint_django"
],
"[django-html]": {
"editor.defaultFormatter": "batisteo.vscode-django"
},
"emmet.includeLanguages": {
"django-html": "html"
}
}
4. 첫 Django 프로젝트 생성
Django는 FastAPI와 달리 프로젝트 생성 명령어를 제공합니다.
# 프로젝트 디렉토리 생성
mkdir django-proj
cd django-proj
# Django 프로젝트 생성
python -m django startproject mysite .
# django-admin startproject mysite .
# 생성된 파일 구조
django-proj/
├── manage.py # Django 프로젝트 관리 스크립트
├── mysite/
│ ├── __init__.py
│ ├── settings.py # 프로젝트 설정
│ ├── urls.py # URL 설정
│ ├── asgi.py # ASGI 설정
│ └── wsgi.py # WSGI 설정
└── venv/
FastAPI와의 차이점
FastAPI는 빈 main.py 파일부터 시작하지만, Django는 기본 프로젝트를 구성해줍니다.
5. 개발 서버 실행
# Django 개발 서버 실행
$ python manage.py runserver
System check identified no issues (0 silenced).
You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
June 08, 2025 - 16:09:21
Django version 5.2.2, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
WARNING: This is a development server. Do not use it in a production setting. Use a production WSGI or ASGI server instead.
For more information on production servers see: https://docs.djangoproject.com/en/5.2/howto/deployment/
FastAPI vs Django 서버 실행 비교
| 항목 | FastAPI | Django |
|---|---|---|
| 실행 명령어 | uvicorn main:app --reload |
python manage.py runserver |
| 기본 포트 | 8000 | 8000 |
| 자동 재시작 | --reload 옵션 필요 |
기본 제공 |
| API 문서 | /docs 자동 생성 |
없음 (DRF 필요) |
6. 첫 페이지 확인
브라우저에서 http://127.0.0.1:8000/ 접속하면 Django 환영 페이지가 표시됩니다.
Django 환영 페이지
- 로켓 이미지와 함께 "The install worked successfully! Congratulations!" 메시지
- Debug 모드에서만 표시 (settings.py의
DEBUG = True)
마이그레이션 경고 해결
django 팩키지에서는 다양한 기본 앱(ex: django.contrib.auth, django.contrib.admin 등)을
지원해주며, 각 기본 앱에서는 각 앱에서 필요한 데이터베이스 테이블에 대한 생성 명령(마이그레이션 파일)이
이미 생성되어있습니다.
python manage.py runserver 시의 아래 경고 메시지는 "현재 바라보고 있는 데이터베이스"에
아직 적용되지 않은 마이그레이션 파일이 있다는 메시지입니다.
You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
이를 적용하기 위해 아래 명령을 실행합니다.
$ python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying auth.0012_alter_user_first_name_max_length... OK
Applying sessions.0001_initial... OK
7. Django 관리 명령어
Django의 manage.py는 FastAPI에는 없는 강력한 관리 도구입니다.
# 주요 명령어
python manage.py runserver # 개발 서버 실행
python manage.py migrate # 데이터베이스 마이그레이션
python manage.py makemigrations # 마이그레이션 파일 생성
python manage.py createsuperuser # 관리자 계정 생성
python manage.py startapp # 새로운 장고 앱 생성
python manage.py shell # Django 쉘 (IPython 지원)
python manage.py test # 테스트 실행
Note
FastAPI에서도 규모있는 애플리케이션 개발에서는 장고 앱과 같은 설계를 합니다.
Django와 FastAPI의 차이점
- Django는 프로젝트 구조를 자동 생성
manage.py를 통한 다양한 관리 명령어 제공- 마이그레이션 시스템이 내장되어 있음
다음 장에서는 Django의 프로젝트 구조와 앱 개념을 자세히 알아보겠습니다!