CHHB stroy

Django 프레임워크 – 파이썬 웹 개발의 강력한 무기 본문

Python

Django 프레임워크 – 파이썬 웹 개발의 강력한 무기

CHHB 2025. 8. 10. 22:28

안녕하세요! 오늘은 Python의 대표 웹 프레임워크, Django(장고)에 대해 공부한 내용을 정리해봤습니다.
처음엔 “장고? 재즈 뮤지션 이름 아닌가?” 했는데 😅, 직접 써보니 웹 개발에 필요한 기능을 거의 다 갖춘 올인원 도구이더라고요.


📌 Django란?

Django는 고수준(high-level) 파이썬 웹 프레임워크로, 복잡한 일을 대신 처리해 주어 개발자가 빠르고 실용적으로 앱을 만들 수 있게 도와줍니다.
경험 많은 개발자들이 설계했으며, 보일러플레이트를 최소화해 앱 개발에 집중할 수 있고, 자유롭고 오픈 소스로 제공됩니다.
또한 Django는 보안을 중요한 가치로 삼아 흔한 웹 보안 실수를 예방하도록 돕고, 높은 트래픽에도 유연하게 확장될 수 있도록 설계되어 있습니다.


📜 장고의 역사와 현황

Django는 2003년 미국의 Lawrence Journal-World 신문사 개발팀이 파이썬으로 웹사이트를 개발하면서 공통 코드를 재사용하기 위해 시작되었습니다.
그 코드는 2005년 오픈소스로 공개되었고, 커뮤니티가 급성장하여 수많은 서드파티 패키지와 튜토리얼이 생겨났습니다.
2025년 8월 기준 최신 안정 버전은 Django 5.2.5이며, 2025년 8월 6일에 버그픽스 릴리스가 발표되었습니다.


🌟 장고의 주요 특징

  • 초고속 개발: 아이디어를 신속히 제품으로 바꿀 수 있습니다.
  • 완전한 구성요소: 인증, 권한, 관리자 페이지 등 흔히 필요한 기능이 기본 내장.
  • 다재다능: 블로그, 전자상거래, 주문형 서비스 등 다양한 웹 프로젝트에 활용 가능.
  • 보안 우선: CSRF, XSS, SQL 인젝션, 클릭재킹 등 주요 보안 위협 기본 방어.
  • 확장성: 서버 확장에 유리한 구조로 대규모 트래픽에도 대응 가능.

🏗 MTV 아키텍처 이해하기

Django는 MTV(Model-Template-View) 패턴을 따릅니다.

  • Model(모델): 데이터 구조와 데이터베이스 연동 방법을 정의.
    예: Post 모델을 만들면 ORM이 SQL 없이 데이터베이스와 대화.
  • Template(템플릿): HTML 등의 출력 구조를 정의, 뷰에서 전달한 데이터로 렌더링.
  • View(뷰): 요청을 받아 모델과 템플릿을 연결해 응답 생성.

이렇게 세 계층이 분리되어 유지보수와 협업이 쉬워지고, 병렬 작업이 가능합니다.


🛠 설치와 프로젝트 생성

# 장고 설치
pip install django

# 새 프로젝트 생성 (myproject는 원하는 이름)
django-admin startproject myproject

# 개발 서버 실행
cd myproject
python manage.py runserver

📂 기본 프로젝트 구조

myproject/
    manage.py        # 장고 명령어 실행
    myproject/       # 프로젝트 설정
        settings.py  # 환경 설정
        urls.py      # URL 라우팅
        wsgi.py      # 서버 인터페이스

🔧 앱 생성과 등록

# 앱 생성
python manage.py startapp blog

settings.py에서 앱 등록:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'blog',  # ← 새 앱 등록
]

✍️ 간단한 모델 예제

# blog/models.py
from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=200)       # 글 제목
    content = models.TextField()                   # 글 내용
    created_at = models.DateTimeField(auto_now_add=True)  # 작성일

    def __str__(self):
        return self.title

🔁 마이그레이션 생성

python manage.py makemigrations  # 마이그레이션 파일 생성
python manage.py migrate         # DB에 적용

🖥 관리자 페이지 활용

# blog/admin.py
from django.contrib import admin
from .models import Post

admin.site.register(Post)

관리자 계정 생성:

python manage.py createsuperuser

이후 /admin/ 경로에서 로그인하여 데이터 관리 가능.


🎯 실전 팁

  • 환경 분리: dev/prod 환경 설정 분리(settings_dev.py, settings_prod.py)
  • 확장 패키지: REST API → django-rest-framework, 실시간 기능 → channels
  • 보안: SECRET_KEY와 DB 비밀번호는 환경변수로 관리
  • 다국어 지원: makemessages, compilemessages 활용

태그: #Django #Python #웹개발 #모델 #초보자