안녕하세요!
지금까지 React, Next.js처럼 프론트엔드 쪽 개념을 주로 정리했었는데,
이번엔 반대편, 백엔드 프레임워크인 Django를 한번 다뤄볼게요.
저도 포트폴리오 사이트 만들 때 Django로 작업해본 적이 있는데,
처음엔 "파이썬으로 웹사이트를 만든다고?" 하는 게 잘 안 와닿더라고요.
근데 막상 써보니까 왜 초보자한테 백엔드 입문용으로 많이 추천되는지 알겠더라고요.
이 글에서는 Django가 뭔지, 왜 만들어졌는지, 핵심 구조가 어떻게 되는지까지 정리해볼게요.
| [웹개발 기초] Django란 무엇인가? 파이썬으로 백엔드까지 다 되는 프레임워크 |
1. Django가 뭔지, 진짜 쉽게 설명하면
Django는 파이썬(Python)으로 만들어진 웹 백엔드 프레임워크예요.
"프레임워크"라는 말이 좀 막연하게 느껴질 수 있는데, 이렇게 생각하면 편해요.
"회원가입, 로그인, 데이터베이스 저장, 관리자 페이지... 웹사이트에 거의 무조건 필요한 기능들을 미리 다 만들어둔 도구 상자"
비유를 하나 들어볼게요.
백엔드를 처음부터 직접 만드는 게 재료 하나하나 사서 집을 짓는 것이라면,
Django는 기초 골조, 배관, 전기 배선까지 이미 다 되어있는 집이에요.
거기에 내가 원하는 방 구조랑 인테리어만 얹으면 되는 거죠.
Django는 "Batteries included(배터리 포함)" 철학으로 유명해요.
필요한 기능 대부분을 프레임워크 자체에 이미 내장해뒀다는 뜻이에요.
2. Django가 왜 만들어졌냐면
Django는 2003년,
미국의 한 신문사(Lawrence Journal-World)에서
뉴스 사이트를 빠르게 만들어야 하는 상황에서 탄생했어요.
기자들이 마감 시간에 쫓기듯이,
개발자들도 빠르게 웹사이트를 찍어내야 하는 상황이었대요.
그러다 보니 자연스럽게 이런 목표를 가지게 됐어요.
첫째, 반복 작업을 줄이자.
회원가입, 로그인, 게시글 CRUD(생성/조회/수정/삭제)...
웹사이트마다 매번 똑같이 만들어야 하는 기능들이 있잖아요.
이걸 매번 처음부터 짜지 않도록, 미리 다 준비해두자는 거였어요.
둘째, 보안을 기본으로 챙기자.
SQL 인젝션, XSS 같은 흔한 보안 취약점을
개발자가 일일이 신경 쓰지 않아도,
프레임워크 차원에서 기본 방어가 되게 만들었어요.
셋째, 관리자 페이지를 자동으로 만들어주자.
이게 Django의 제일 유명한 기능인데, 뒤에서 자세히 설명할게요.
3. 핵심 개념 1 — MTV 패턴
Django를 검색하면 꼭 나오는 용어가 MTV 패턴이에요.
(MVC 패턴이랑 비슷한데 이름만 달라요)
- Model — 데이터베이스 구조를 정의하는 부분
- Template — 사용자한테 보여지는 화면(HTML)
- View — Model에서 데이터를 가져와서 Template에 넘겨주는 로직
이 세 가지가 역할을 나눠서 맡는 구조예요.
# models.py — 데이터베이스 구조 정의
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
# views.py — 데이터 가져와서 화면에 전달
def post_list(request):
posts = Post.objects.all()
return render(request, 'post_list.html', {'posts': posts})
<!-- post_list.html — 실제로 보여지는 화면 -->
{% for post in posts %}
<h2>{{ post.title }}</h2>
<p>{{ post.content }}</p>
{% endfor %}
Model에서 데이터 형태를 정하고, View가 그 데이터를 가져와서, Template이 화면에 뿌려주는 흐름이에요.
이렇게 역할을 나눠두면 나중에 코드가 많아져도 어디를 고쳐야 할지 헷갈리지 않아요.
4. 핵심 개념 2 — ORM (데이터베이스를 파이썬 코드로)
Django에서 제일 편하다고 느껴지는 부분이 **ORM(Object-Relational Mapping)**이에요.
원래 데이터베이스를 다루려면 SQL 문법을 알아야 해요.
SELECT * FROM post WHERE title = '공지사항';
근데 Django는 이걸 파이썬 코드로 그대로 쓸 수 있게 해줘요.
Post.objects.filter(title='공지사항')
SQL을 몰라도 파이썬 문법만으로 데이터베이스를 조회, 추가, 수정, 삭제할 수 있는 거예요.
물론 실무에서 SQL을 아예 안 배워도 되는 건 아니지만,
입문 단계에서는 이 부분이 진입 장벽을 정말 많이 낮춰줘요.
5. 핵심 개념 3 — 자동 생성되는 관리자 페이지
Django의 시그니처 기능이에요.
models.py에 데이터 구조만 정의해두면,
관리자 페이지가 자동으로 만들어져요.
# admin.py
from django.contrib import admin
from .models import Post
admin.site.register(Post)
이 코드 몇 줄만 추가하면, /admin 주소로 들어갔을 때
게시글을 추가하고, 수정하고, 삭제할 수 있는 화면이 자동으로 생성돼요.
화면 디자인이나 버튼 하나 직접 만든 적 없는데도요.
보통 다른 프레임워크에서는 이런 관리자 기능을 직접 다 만들어야 하는데,
Django는 이게 기본으로 딸려있는 거예요.
6. 핵심 개념 4 — URL 라우팅
Django도 라우팅 방식이 있는데,
Next.js처럼 폴더 구조로 자동 결정되는 게 아니라
직접 파일에 명시하는 방식이에요.
# urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.post_list, name='home'),
path('post/<int:id>/', views.post_detail, name='post_detail'),
]
/ 주소로 오면 post_list 함수를,
/post/1/처럼 숫자가 붙은 주소로 오면 post_detail 함수를
실행하라고 직접 정의해주는 거예요.
<int:id> 부분이 동적인 값(게시글 번호)을 받는 부분이에요.
7. Django로 뭘 만들 수 있냐면
게시판 / 커뮤니티 사이트
CRUD 기능이 핵심인 서비스에 최적화되어 있어요.
ORM이랑 관리자 페이지 덕분에 개발 속도가 빨라요.
사내 관리 시스템
직원 정보, 재고 관리처럼 데이터를 조회/수정하는 게 중심인 내부 도구를 만들 때 특히 유리해요.
관리자 페이지를 그대로 내부 툴로 써버리는 경우도 많아요.
API 서버
Django REST Framework(DRF)라는 확장 도구를 쓰면,
프론트엔드(React, Next.js 등)와 분리된 API 전용 서버로도 만들 수 있어요.
빠른 프로토타입
아이디어를 빠르게 검증해야 할 때,
회원가입/로그인/게시판 같은 기본 기능을 며칠 만에 갖춘 서비스를 만들 수 있어요.
실제로 Instagram 초기 버전, Spotify, Pinterest 같은 서비스들도 Django 기반으로 시작했어요.
8. Django 배우기 전에 알아둘 것
① 파이썬 기초는 필수
Django는 파이썬 문법 위에서 동작해요.
함수, 클래스, 딕셔너리 정도는 익숙해야 코드가 읽혀요.
② SQL을 아예 몰라도 되는 건 아니에요
ORM이 편하긴 하지만,
데이터베이스가 어떻게 동작하는지
기본 개념(테이블, 관계) 정도는 알고 시작하는 게 좋아요.
③ 프로젝트 구조에 익숙해지기
Django는 project와 app이라는 두 단위로 구조가 나뉘어요.
하나의 project 안에 여러 개의 app을 만드는 방식인데,
처음엔 이 구조가 좀 낯설 수 있어요.
myproject/ ← project (전체 설정)
├── manage.py
├── myapp/ ← app (기능 단위, 예: 게시판, 회원)
│ ├── models.py
│ ├── views.py
│ └── urls.py
④ 바이브코딩으로 만들어보기
Cursor한테 "Django로 간단한 게시판 만들어줘" 요청해서,
models.py, views.py, urls.py가 어떻게 연결되는지 직접 눈으로 확인해보는 게 제일 빨라요.
9. Next.js vs Django, 뭐가 다를까
같은 "풀스택"이라는 말을 쓰긴 하지만 결이 좀 달라요.
| 구분 | Next.js | Django |
|---|---|---|
| 언어 | JavaScript/TypeScript | Python |
| 정체 | React 기반 프론트+백엔드 프레임워크 | 파이썬 기반 백엔드 프레임워크 |
| 화면(UI) | React 컴포넌트로 직접 구성 | Template 또는 별도 프론트엔드 연동 |
| 데이터베이스 | 별도 라이브러리 필요 (Prisma 등) | ORM 기본 내장 |
| 관리자 페이지 | 없음 (직접 구현) | 자동 생성 |
| 적합한 상황 | 화면 중심 서비스, SEO 중요한 사이트 | 데이터 중심 서비스, 관리 기능 필요한 서비스 |
정리하면 이래요.
화면(UI) 완성도가 중요하고 프론트엔드 위주라면 → Next.js
데이터베이스, 관리자 기능, 백엔드 로직이 중요하다면 → Django
실제로는 React/Next.js로 화면을 만들고,
Django(또는 DRF)로 API 서버만 따로 두는 조합도 정말 많이 쓰여요.
Django, 겁낼 필요 없어요
MTV 패턴, ORM, 관리자 페이지... 처음엔 낯선 용어들이 많지만, 핵심은 하나예요.
"웹사이트에 거의 항상 필요한 기능들을, 파이썬 코드 몇 줄로 빠르게 갖출 수 있게 해주는 프레임워크"
오늘 정리한 내용만 기억해도 됩니다.
- Django = 파이썬 기반 백엔드 프레임워크, "배터리 포함" 철학
- MTV 패턴 = Model(데이터) - Template(화면) - View(로직) 역할 분리
- ORM = SQL 없이 파이썬 코드로 데이터베이스 다루기
- 관리자 페이지 = models.py 정의만으로 자동 생성
- URL 라우팅 = urls.py에 주소와 실행 함수를 직접 명시
- Django REST Framework를 쓰면 API 전용 서버로도 활용 가능
열공하세요! 🙌
댓글 없음:
댓글 쓰기