좋아, 이번엔 Python의 웹 프레임워크 중 하나인 Django에 대해 자세히 설명해줄게.
Django란?
Django는 Python으로 작성된 고수준 웹 프레임워크야. 웹 애플리케이션을 빠르고 효율적으로 개발할 수 있게 해줘. “DRY(Don’t Repeat Yourself)“와 “재사용성”을 강조하고, 보안에 신경 쓰면서도 확장성이 좋아서 규모 있는 프로젝트에 자주 사용돼.
Django의 특징
• MTV 아키텍처 사용
Django는 Model-Template-View 패턴을 사용해. MVC(Model-View-Controller)와 비슷한 구조야.
• Model: 데이터베이스 구조 정의 (ORM 사용)
• Template: 사용자에게 보여지는 HTML
• View: 비즈니스 로직 처리
• 강력한 ORM (Object-Relational Mapping)
SQL을 직접 쓰지 않고, Python 클래스만으로 DB 연동이 가능해.
• 자동 관리자(admin) 페이지 제공
데이터베이스 기반의 관리 UI를 자동으로 생성해줘서 운영에 매우 유리해.
• 보안 기능 내장
XSS, CSRF, SQL Injection 같은 취약점에 기본적으로 대응돼 있음.
• 풍부한 문서와 커뮤니티
공식 문서가 잘 정리되어 있고, 튜토리얼도 많아서 입문자에게 좋아.
Django 프로젝트 구조 예시
Django 프로젝트를 시작하면 보통 이런 구조가 만들어져:
myproject/
├── manage.py
├── myproject/
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── myapp/
├── __init__.py
├── admin.py
├── apps.py
├── models.py
├── tests.py
├── views.py
└── templates/
Django 기초 예시
1. 프로젝트 생성
django-admin startproject myproject
cd myproject
python manage.py startapp myapp
2. Model 작성
# myapp/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)
3. 마이그레이션으로 DB 반영
python manage.py makemigrations
python manage.py migrate
4. 관리자(admin) 등록
# myapp/admin.py
from django.contrib import admin
from .models import Post
admin.site.register(Post)
5. View와 Template 작성
# myapp/views.py
from django.shortcuts import render
from .models import Post
def post_list(request):
posts = Post.objects.all()
return render(request, 'post_list.html', {'posts': posts})
<!-- templates/post_list.html -->
<h1>블로그 글 목록</h1>
{% for post in posts %}
<h2>{{ post.title }}</h2>
<p>{{ post.content }}</p>
{% endfor %}
6. URL 연결
# myapp/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.post_list, name='post_list'),
]
# myproject/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('myapp.urls')),
]
Django를 배우기 좋은 사람
• 웹 애플리케이션을 Python으로 만들고 싶은 사람
• 보안이나 관리자 기능이 내장된 프레임워크가 필요한 사람
• 빠르게 개발해서 실제 서비스까지 연결하고 싶은 사람
더 알고 싶은 부분이 있어? 예를 들어:
• 회원가입/로그인 구현 방법
• Django와 React 연결 방법
• Django REST Framework로 API 만들기
어떤 쪽이든 알려줘. 그 부분부터 자세히 설명해줄게.