웹 개발은 단순한 정적인 페이지에서부터 데이터베이스와 연동되는 복잡한 애플리케이션까지 다양한 형태로 발전해 왔습니다. Python은 웹 개발에 최적화된 언어 중 하나이며, 그중에서도 Django는 강력한 기능과 높은 생산성을 제공하는 웹 프레임워크로 널리 사용되고 있습니다.
Django는 "배터리가 포함된 프레임워크(Batteries Included)"라는 철학을 바탕으로, ORM(Object-Relational Mapping), URL 라우팅, 폼 처리, 보안 기능, 관리자 패널 등 대부분의 웹 개발에 필요한 기능을 기본적으로 제공하여 빠른 개발을 가능하게 합니다.
이번 글에서는 Django의 핵심 개념, 프로젝트 설정, ORM 활용, 템플릿 시스템, 그리고 간단한 블로그 애플리케이션 구축까지 차근차근 알아보겠습니다.
1. Django란 무엇인가?
🔹 Django의 특징
Django는 Python 기반의 고급 웹 프레임워크로, 대규모 애플리케이션부터 소규모 프로젝트까지 다양한 용도로 활용됩니다. Django의 주요 특징은 다음과 같습니다.
- MTV 아키텍처(Model-Template-View): 코드의 구조를 명확하게 유지할 수 있음.
- ORM(Object-Relational Mapping): SQL을 직접 사용하지 않고 Python 코드로 데이터베이스를 조작할 수 있음.
- 강력한 관리자 인터페이스(Admin Panel): 기본적으로 제공되는 강력한 백오피스를 활용하여 데이터 관리 가능.
- 보안 기능 제공: XSS, CSRF 공격 방지, 사용자 인증 기능 내장.
- 빠른 개발 속도: 기본적으로 포함된 기능을 활용하여 웹 애플리케이션을 신속하게 구축할 수 있음.
2. Django 프로젝트 설정
Django를 사용하려면 먼저 Python이 설치되어 있어야 하며, django
패키지를 설치해야 합니다.
🔹 Django 설치
pip install django
🔹 Django 프로젝트 생성
프로젝트를 시작하려면 django-admin startproject
명령어를 사용합니다.
django-admin startproject myproject
cd myproject
python manage.py runserver
myproject/
디렉터리가 생성되며, Django 프로젝트의 기본 구조가 자동으로 설정됩니다.runserver
명령어를 실행하면 로컬 서버(127.0.0.1:8000) 가 실행되며, 브라우저에서 Django 기본 페이지를 확인할 수 있습니다.
3. Django의 MTV 아키텍처
Django는 Model-Template-View (MTV) 아키텍처를 따르며, 이는 MVC 패턴과 유사한 개념입니다.
컴포넌트 | 역할 |
---|---|
Model(모델) | 데이터베이스 테이블을 정의하고 ORM을 통해 데이터를 조작 |
Template(템플릿) | HTML과 Django 템플릿 언어를 이용하여 동적인 웹 페이지 렌더링 |
View(뷰) | 사용자 요청을 처리하고 응답을 반환하는 비즈니스 로직 |
4. Django URL 라우팅
Django에서는 urls.py
파일을 활용하여 특정 URL과 뷰(View)를 매핑할 수 있습니다.
🔹 URL 패턴 정의 (urls.py
)
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('about/', views.about, name='about'),
]
path('', views.index, name='index')
→ 루트 URL 요청 시index()
뷰 함수 실행.path('about/', views.about, name='about')
→/about/
URL 요청 시about()
함수 실행.
5. Django ORM (Object-Relational Mapping)
Django ORM을 사용하면 SQL을 직접 작성하지 않고도 Python 코드로 데이터베이스를 조작할 수 있습니다.
🔹 모델 정의 (models.py
)
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
published_date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
title
→ 문자열 필드(최대 100자).content
→ 긴 텍스트 저장.published_date
→ 자동으로 현재 날짜가 저장됨.
🔹 데이터베이스 적용
python manage.py makemigrations
python manage.py migrate
위 명령어를 실행하면 데이터베이스에 Article
테이블이 생성됩니다.
🔹 데이터 저장 및 조회 (views.py
)
from django.shortcuts import render
from .models import Article
def index(request):
articles = Article.objects.all() # 모든 게시글 조회
return render(request, 'index.html', {'articles': articles})
6. Django 템플릿 시스템
Django는 Jinja2 기반의 템플릿 엔진을 사용하여 동적인 HTML 페이지를 생성할 수 있습니다.
🔹 템플릿 파일 (templates/index.html
)
<!DOCTYPE html>
<html>
<head>
<title>블로그</title>
</head>
<body>
<h1>게시글 목록</h1>
<ul>
{% for article in articles %}
<li>{{ article.title }} - {{ article.published_date }}</li>
{% endfor %}
</ul>
</body>
</html>
{% for article in articles %}
→ Python 리스트 데이터를 템플릿에서 반복 출력.{{ article.title }}
→Article
객체의title
속성을 출력.
7. Django 관리자 패널 (Admin Panel)
Django는 기본적으로 강력한 관리자 페이지를 제공하여, 데이터베이스 모델을 쉽게 관리할 수 있습니다.
🔹 관리자 패널 활성화 (admin.py
)
from django.contrib import admin
from .models import Article
admin.site.register(Article)
🔹 관리자 계정 생성
python manage.py createsuperuser
위 명령어를 실행한 후 사용자명, 이메일, 비밀번호를 설정하면 관리자 페이지에 로그인할 수 있습니다.
http://127.0.0.1:8000/admin/
에 접속하여 관리자 페이지 확인 가능.
8. Django로 간단한 블로그 애플리케이션 만들기
Django를 활용하여 간단한 블로그 애플리케이션을 구축할 수 있습니다.
🔹 프로젝트 및 앱 생성
django-admin startproject myblog
cd myblog
django-admin startapp blog
🔹 모델 정의 (models.py
)
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
🔹 뷰 작성 (views.py
)
from django.shortcuts import render, get_object_or_404
from .models import Post
def post_list(request):
posts = Post.objects.all()
return render(request, 'post_list.html', {'posts': posts})
🔹 URL 매핑 (urls.py
)
urlpatterns = [
path('', views.post_list, name='post_list'),
]
🔥 결론: Django로 강력한 웹 애플리케이션 개발하기
Django는 빠른 개발 속도, 강력한 보안 기능, 높은 생산성을 제공하여, 초보자부터 전문가까지 모두 활용할 수 있는 강력한 웹 프레임워크입니다.
🎯 핵심 정리
- Django는 MTV 아키텍처를 기반으로 동작.
- ORM을 활용하여 데이터베이스를 효율적으로 조작 가능.
- 내장된 관리자 패널을 통해 데이터 관리 가능.
- 템플릿 시스템을 활용하여 동적인 HTML 페이지 생성 가능.
Django를 활용하여 강력한 웹 애플리케이션을 만들어보세요! 🚀
'프로그래밍 > Python' 카테고리의 다른 글
데이터 과학을 위한 Pandas 완벽 가이드 (0) | 2025.02.28 |
---|---|
데이터 과학 필수 라이브러리: NumPy 완벽 가이드 (0) | 2025.02.28 |
Python 웹 개발: Flask 완벽 가이드 (0) | 2025.02.28 |
Python HTTP 클라이언트 완벽 가이드: `requests` 라이브러리를 활용한 API 통신 (1) | 2025.02.28 |
네트워킹 기초: Python 소켓 프로그래밍 완벽 가이드 (0) | 2025.02.28 |