Django
는 웹 애플리케이션 개발을 위한 고수준 웹 프레임워크로, 빠르고 안전하며 확장 가능한 웹사이트를 구축하는 데 도움을 준다. Django의 주요 구성 요소인 View, Template, Model, URL에 대해 설명한다.
URL
은 웹 애플리케이션의 엔드포인트를 정의하는 부분이다. Django의 URL 디스패처를 사용하여 요청된 URL을 적절한 뷰로 매핑한다.
유저가 www.example.com과 같은 url을 통해 접근했을 때, View 내의 실행할 함수를 정의한다.
# urls.py
from django.urls import path
from . import views
urlpatterns = [
path('my-view/', views.my_view, name='my_view'),
]
View
는 웹 애플리케이션의 로직을 처리하는 부분이다. 사용자의 요청을 받아 적절한 응답을 생성한다. View는 일반적으로 함수 기반 뷰(Function-Based View, FBV)
또는 클래스 기반 뷰(Class-Based View, CBV)
로 작성된다.
View에서 정의한 함수(또는 클래스)는 개발된 코드에 따라 Python 로직, Template(.html), Model(db)를 처리한다.
# 함수 기반 뷰 예제
from django.http import HttpResponse
def my_view(request):
return HttpResponse("Hello, World!")
# 클래스 기반 뷰 예제
from django.http import HttpResponse
from django.views import View
class MyView(View):
def get(self, request):
return HttpResponse("Hello, World!")
Template
은 웹 페이지의 표시 로직을 처리하는 부분이다. HTML 파일로 작성되며, Django 템플릿 언어(DTL)
를 사용하여 동적 콘텐츠를 생성한다.
html 파일이라고 보면 된다. 여기에 View에서 전달한 Python 기반 변수가 포함될 수 있다. 또한 요구에 따라 js, ajax 등도 포함된다.
<!-- templates/my_template.html -->
<!DOCTYPE html>
<html>
<head>
<title>My Page</title>
</head>
<body>
<h1>{{ title }}</h1>
<p>{{ message }}</p>
</body>
</html>
# View에서 템플릿 사용 예제
from django.shortcuts import render
def my_view(request):
context = {
'title': 'My Title',
'message': 'Hello, World!'
}
return render(request, 'my_template.html', context)
Model
은 데이터베이스와 상호작용하는 부분이다. Django의 ORM(Object-Relational Mapping)
을 사용하여 데이터베이스 테이블을 파이썬 클래스로 정의한다.
처음에 Model을 구성한 후, Migration을 하면 Django 템플릿 내에서 DB를 편하게 이용 및 관리할 수 있다.
# models.py
from django.db import models
class MyModel(models.Model):
name = models.CharField(max_length=100)
age = models.IntegerField()
def __str__(self):
return self.name
# View에서 모델 사용 예제
from .models import MyModel
def my_view(request):
objects = MyModel.objects.all()
context = {
'objects': objects
}
return render(request, 'my_template.html', context)
이와 같이 Django에서 View, Template, Model, URL은 각각의 역할을 수행하며, 이들이 조화롭게 작동하여 웹 애플리케이션을 구성한다.
@nullvuild