Django 웹 개발 프로젝트 기초 및 데이터베이스 연결

안녕하세요. 오늘은 Django 웹 프레임워크를 활용한 웹 개발의 기초와 데이터베이스 연결에 대해 알아보도록 하겠습니다. Django는 파이썬으로 작성된 오픈 소스 웹 프레임워크로, 빠른 개발 속도와 높은 안정성을 자랑합니다. 이 글에서는 Django의 기본 개념부터 실제 프로젝트에서의 데이터베이스 연결 방법까지 자세하게 설명하겠습니다.

Django 프레임워크의 개요

Django는 2005년에 처음 출시된 이후로 웹 애플리케이션 개발에서 큰 인기를 끌고 있습니다. 이 프레임워크는 Model-View-Template (MVT) 아키텍처를 기반으로 하며, 각 요소가 명확하게 나뉘어 있어 유지보수와 확장성이 뛰어납니다. Django의 주요 특징은 다음과 같습니다:

  • 쉽고 빠른 개발 환경 제공
  • 내장 ORM(Object-Relational Mapping) 지원
  • 강력한 보안 기능 내장
  • 자동화된 관리 인터페이스 제공

MVT 아키텍처의 이해

Django는 MVT 아키텍처를 따릅니다. MVT는 다음과 같은 세 가지 구성 요소로 나눌 수 있습니다:

  • 모델(Model): 데이터베이스와의 상호작용을 관리하며 데이터 구조를 정의합니다.
  • 뷰(View): 사용자 요청을 처리하고 적절한 응답을 반환합니다.
  • 템플릿(Template): 사용자에게 보여줄 UI를 구성합니다.

Django 프로젝트 설정하기

Django 프로젝트를 시작하기 위해서는 먼저 Python과 Django를 설치해야 합니다. Python은 공식 웹사이트에서 다운로드 받을 수 있으며, Django는 pip 명령어를 통해 설치할 수 있습니다:

pip install django

프로젝트를 생성하기 위해서는 터미널에서 다음 명령어를 실행합니다:

django-admin startproject myproject

이 명령어를 통해 ‘myproject’라는 디렉토리가 생성되며, 그 안에 Django 프로젝트의 기본 구조가 만들어집니다.

앱 생성하기

Django 내에서 기능을 modular하게 관리하기 위해 앱을 생성해야 합니다. 앱은 독립적인 모듈로 특정 기능을 수행합니다. 다음 명령어로 앱을 생성해 보겠습니다:

python manage.py startapp myapp

이 명령어를 실행하면 ‘myapp’이라는 디렉토리가 생성되어 그 안에 기본 구조가 설계됩니다.

데이터베이스 모델 정의하기

Django에서 데이터베이스와의 상호작용은 모델을 통해 이루어집니다. 모델은 ‘models.py’ 파일에 정의되며, 데이터베이스 테이블 직렬화와 관련된 필드와 속성을 포함합니다. 예를 들어, 블로그 애플리케이션의 포스트 모델을 다음과 같이 정의할 수 있습니다:

from django.db import models
class Post(models.Model):
  title = models.CharField(max_length=200)
  content = models.TextField()
  pub_date = models.DateTimeField('date published')

모델을 정의한 후, 데이터베이스에 반영하기 위해 다음 명령어를 입력해야 합니다:

python manage.py makemigrations myapp
python manage.py migrate

뷰 작성하기

HTTP 요청을 처리하고 응답을 반환하는 뷰는 ‘views.py’에 정의됩니다. 예를 들어, 포스트 목록을 보여주는 뷰는 다음과 같이 작성할 수 있습니다:

from django.shortcuts import render
from .models import Post
def post_list(request):
  posts = Post.objects.all()
  return render(request, 'myapp/post_list.html', {'posts': posts})

URL 라우팅 설정하기

Django의 URL 라우팅은 ‘urls.py’ 파일에 정의됩니다. 앞서 작성한 포스트 목록 뷰를 /posts/ URL에 매핑하려면 다음과 같이 설정해야 합니다:

from django.urls import path
from . import views
urlpatterns = [
  path('posts/', views.post_list, name='post_list'),
]

템플릿 작성하기

Django는 HTML 파일에 동적 데이터를 삽입할 수 있는 템플릿 시스템을 제공합니다. 템플릿 파일은 ‘templates’ 디렉토리에 저장됩니다. 예를 들어, 아래와 같이 포스트 목록을 나열하는 템플릿을 작성할 수 있습니다:

<!DOCTYPE html>
<html>
<head>
  <title>Blog Posts</title>
</head>
<body>
  <h1>Blog Posts</h1>
  <ul>
  {% for post in posts %}
    <li>{{ post.title }} ({{ post.pub_date }})</li>
  {% endfor %}
  </ul>
</body>
</html>

Django에서의 데이터베이스 연동

Django는 다양한 데이터베이스와 연결할 수 있는 유연성을 제공합니다. 기본적으로 SQLite를 사용하도록 설정되어 있지만, 다른 데이터베이스에 연결하기 위해서는 settings.py 파일을 수정해야 합니다. 예를 들어, PostgreSQL을 사용할 경우 다음과 같은 설정이 필요합니다:

DATABASES = {
  'default': {
    'ENGINE': 'django.db.backends.postgresql',
    'NAME': 'mydatabase',
    'USER': 'myuser',
    'PASSWORD': 'mypassword',
    'HOST': 'localhost',
    'PORT': '5432',
  }
}

마무리

Django 웹 프레임워크는 강력한 기능과 효율성을 가지고 있어, 웹 개발에 적합한 도구입니다. 이 글을 통해 Django의 기초와 데이터베이스 연결 방법에 대한 이해를 높일 수 있기를 바랍니다. 앞으로도 Django를 활용한 다양한 프로젝트를 진행하며 더 많은 경험과 지식을 쌓아가시기 바랍니다.

자주 물으시는 질문

Django란 무엇인가요?

Django는 파이썬 기반의 웹 프레임워크로, 효율적인 웹 애플리케이션 개발을 지원합니다. 유연하고 강력한 기능을 제공하여 개발자들에게 인기를 얻고 있습니다.

Django 프로젝트를 어떻게 시작하나요?

터미널에서 ‘django-admin startproject [프로젝트명]’ 명령어를 입력하면 새로운 Django 프로젝트를 생성할 수 있습니다. 이 명령어로 기본 구조가 자동으로 설정됩니다.

데이터베이스와 어떻게 연동하나요?

Django는 다양한 데이터베이스를 지원합니다. settings.py 파일을 수정하여 데이터베이스 종류와 연결 정보를 설정하면 됩니다.

모델을 어떻게 정의하나요?

모델은 ‘models.py’ 파일에 클래스 형태로 정의되며, 데이터베이스의 테이블 구조와 데이터를 다루는 필드를 포함합니다. 정의 후 ‘makemigrations’와 ‘migrate’ 명령으로 데이터베이스에 반영합니다.

댓글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다