Django란?
Django는 Python 기반의 대표적인 웹 프레임워크입니다. 로그인, 관리자 페이지, ORM, URL 라우팅 등 웹 서비스 개발에 필요한 기능을 기본으로 제공하기 때문에 생산성이 매우 높습니다.
특히 MTV(Model-Template-View) 구조를 사용하여 유지보수가 쉽고 대규모 프로젝트에서도 많이 활용됩니다.
Django 프로젝트 생성
먼저 Django를 설치합니다.
pip install django
프로젝트를 생성합니다.
django-admin startproject config
프로젝트 폴더로 이동한 후 개발 서버를 실행합니다.
cd config
python manage.py runserver
| 명령어 | 설명 |
|---|---|
| startproject | 프로젝트 생성 |
| runserver | 개발 서버 실행 |
| startapp | 앱 생성 |
Django 프로젝트 구조
config/
│
├── config/
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
│
├── manage.py
└── app/
| 파일 | 역할 |
|---|---|
| settings.py | 프로젝트 설정 |
| urls.py | URL 관리 |
| manage.py | 관리 명령 실행 |
앱(App) 생성
python manage.py startapp blog
생성한 앱을 settings.py에 등록합니다.
INSTALLED_APPS = [
...
'blog',
]
URL 기본 문법
urls.py에서 URL과 View를 연결합니다.
from django.urls import path
from . import views
urlpatterns = [
path('', views.index),
]
URL 요청이 들어오면 연결된 View 함수가 실행됩니다.
View 기본 문법
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello Django!")
브라우저에서 접속하면 "Hello Django!"가 출력됩니다.
| 구성 요소 | 역할 |
|---|---|
| request | 클라이언트 요청 정보 |
| HttpResponse | 응답 반환 |
Template 사용하기
HTML 파일을 사용하면 동적인 화면을 쉽게 만들 수 있습니다.
from django.shortcuts import render
def index(request):
return render(request, 'index.html')
templates/index.html
<h1>Hello Django</h1>
Model 기본 문법
데이터베이스 테이블을 Python 클래스로 정의합니다.
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
모델 변경 후에는 마이그레이션을 수행해야 합니다.
python manage.py makemigrations
python manage.py migrate
ORM 사용하기
SQL을 직접 작성하지 않고 데이터를 조회할 수 있습니다.
Post.objects.create(
title="첫 글",
content="안녕하세요."
)
Post.objects.all()
Post.objects.filter(title="첫 글")
| 메서드 | 설명 |
|---|---|
| create() | 데이터 생성 |
| all() | 전체 조회 |
| filter() | 조건 조회 |
| get() | 단일 조회 |
관리자(Admin) 페이지
관리자 계정을 생성합니다.
python manage.py createsuperuser
관리자 페이지에서 모델을 관리하려면 admin.py에 등록합니다.
from django.contrib import admin
from .models import Post
admin.site.register(Post)
실무에서 많이 사용하는 구조
- 프로젝트와 앱을 명확하게 분리합니다.
- Template, Static, Media 디렉터리를 구분합니다.
- 환경 변수는 별도 파일로 관리합니다.
- requirements.txt를 함께 관리합니다.
- Git 저장소에는
venv/와__pycache__/를 포함하지 않습니다.
초보자가 자주 하는 실수
- 앱을 생성한 뒤
INSTALLED_APPS에 등록하지 않음 - 마이그레이션을 수행하지 않음
- URL과 View를 연결하지 않음
- Template 경로를 잘못 설정함
- 가상 환경을 활성화하지 않고 패키지를 설치함
Django 개발 팁
| 항목 | 추천 방법 |
|---|---|
| IDE | VS Code + Python 확장 |
| 버전 관리 | Git + GitHub |
| 패키지 관리 | requirements.txt 사용 |
| 가상 환경 | venv 사용 |
실무 팁: 프로젝트를 시작할 때는venv를 생성하고, 필요한 패키지를 설치한 뒤requirements.txt를 생성하는 습관을 들이면 협업과 배포가 훨씬 수월합니다.
정리
Django는 URL, View, Template, Model, ORM의 흐름만 이해해도 기본적인 웹 애플리케이션을 만들 수 있습니다. 이후에는 CRUD, 인증(Authentication), 클래스 기반 뷰(CBV), REST API, 배포 등의 주제를 학습하면 실무 역량을 빠르게 높일 수 있습니다.
FAQ
Q1. Django와 Flask의 차이는 무엇인가요?
Django는 다양한 기능이 기본 제공되는 풀스택 프레임워크이며, Flask는 필요한 기능을 직접 선택해 구성하는 경량 프레임워크입니다.
Q2. Django에서 ORM을 사용하는 이유는 무엇인가요?
SQL을 직접 작성하지 않고도 데이터베이스를 객체 형태로 다룰 수 있어 생산성과 유지보수성이 향상됩니다.
Q3. Model을 수정하면 바로 데이터베이스가 변경되나요?
아니요. makemigrations와 migrate 명령을 실행해야 변경 사항이 데이터베이스에 반영됩니다.
Q4. 하나의 프로젝트에 여러 앱을 만들 수 있나요?
가능합니다. 기능별로 앱을 분리하는 것이 Django의 일반적인 개발 방식입니다.
Q5. Django를 배우기 전에 Python을 알아야 하나요?
기본 문법(변수, 함수, 클래스)을 이해하고 있다면 Django 학습을 훨씬 수월하게 진행할 수 있습니다.
함께 읽으면 좋은 글
'django' 카테고리의 다른 글
| Django 프로젝트 구조 (0) | 2026.07.10 |
|---|---|
| Django Model (0) | 2026.06.29 |
| Django ORM (0) | 2026.06.29 |
| Django CRUD (0) | 2026.06.29 |
| django 가상환경 세팅 및 프로젝트 생성 (1) | 2025.11.25 |