[파이썬] Django의 기본 구조와 컨셉

Django는 파이썬 웹 프레임워크로, 웹 애플리케이션을 개발할 때 사용됩니다. Django는 MVC(Model-View-Controller) 아키텍처 패턴을 따르지 않고, 대신 MVT(Model-View-Template) 아키텍처 패턴을 기반으로 합니다. 이러한 MVT 패턴은 Django의 기본 구조와 컨셉을 이해하는 핵심입니다.

MVT 아키텍처 패턴

모델(Model)

모델은 데이터베이스와 관련된 작업을 수행합니다. Django에서는 각 모델은 기본적으로 데이터베이스의 테이블과 매핑됩니다. 모델은 데이터베이스에 데이터를 저장하고 가져오는데 사용되며, 필드(field)와 메소드(method)로 구성됩니다. 모델은 Django의 ORM(Object Relational Mapping)을 통해 데이터베이스와 상호작용합니다.

from django.db import models

class Book(models.Model):  # 모델 정의
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=50)
    published_date = models.DateField()

    def __str__(self):
        return self.title

뷰(View)

뷰는 모델로부터 데이터를 가져와 템플릿에 전달하고, 사용자에게 보여지는 HTML 컨텐츠를 생성합니다. 뷰는 URL 패턴에 매칭되어 해당되는 로직을 수행하고, 템플릿에 데이터를 전달합니다. 뷰는 Django의 데코레이터 또는 클래스 기반 뷰로 작성될 수 있습니다.

from django.shortcuts import render
from .models import Book

def book_list(request):
    books = Book.objects.all()  # 모든 책을 가져오는 쿼리
    return render(request, 'book_list.html', {'books': books})  # 템플릿에 책 목록 전달

템플릿(Template)

템플릿은 사용자에게 보여줄 HTML 컨텐츠의 구조와 모습을 정의합니다. 템플릿은 Django의 템플릿 언어를 사용하여 동적인 데이터를 출력하고, 자바스크립트, CSS 등을 이용하여 웹 페이지를 꾸밀 수 있습니다. 뷰에서 전달받은 데이터를 템플릿에서 사용하여 웹 페이지를 생성합니다.


<!-- book_list.html -->
{% for book in books %}
    <div>
        <h3>{{ book.title }}</h3>
        <p>{{ book.author }}</p>
        <p>{{ book.published_date }}</p>
    </div>
{% endfor %}

Django의 기본 구조

Django 애플리케이션은 프로젝트(Project)와 앱(App)으로 구성됩니다. 프로젝트는 하나 이상의 앱으로 구성되며, 각 앱은 독립적으로 개발 및 배포 가능합니다. Django의 기본 구조는 아래와 같습니다:

myproject/  # 프로젝트 디렉토리
    myproject/  # 프로젝트 설정
        settings.py  # 설정 파일
        urls.py  # URL 패턴 정의
    myapp/  # 앱 디렉토리
        models.py  # 모델 정의
        views.py  # 뷰 정의
        templates/  # 템플릿 디렉토리
            book_list.html  # 템플릿 파일

settings.py

settings.py 파일은 Django 프로젝트의 전반적인 설정을 담당합니다. 데이터베이스, 앱, 템플릿 등의 설정 정보를 포함하고 있습니다. 이 파일을 통해 앱을 추가하거나, 정적 파일의 경로를 설정할 수 있습니다.

urls.py

urls.py 파일은 URL 패턴과 각 패턴에 매칭되는 뷰를 연결하는 역할을 합니다. 사용자의 요청 URL과 일치하는 패턴을 찾아 해당하는 뷰로 연결합니다. URL 패턴은 정규식을 활용하여 작성할 수 있습니다.

결론

Django는 MVT 아키텍처 패턴을 기반으로 한 파이썬 웹 프레임워크로, 모델, 뷰, 템플릿의 조합으로 웹 애플리케이션을 개발할 수 있습니다. Django의 기본 구조와 컨셉을 이해하면 웹 개발에 필요한 기반을 제대로 가질 수 있습니다.