파이썬 장고 6.0 완벽 가이드

Share

파이썬 웹 개발의 강력한 도구, 장고(Django) 6.0 완벽 가이드: 기초부터 핵심 기능까지

장고(Django)는 파이썬 기반의 오픈소스 웹 프레임워크입니다. 루비 온 레일스에서 영감을 받아 개발되었으며, 웹 개발을 더욱 빠르고 효율적으로 만들어줍니다. 이번 글에서는 최신 버전인 장고 6.0을 사용하여 기본적인 웹 애플리케이션을 구축하는 방법을 알아보고, 웹 개발자에게 중요한 몇 가지 주요 기능에 대해서도 살펴보겠습니다.

장고 시작하기: 개발 환경 설정

장고 6.0을 사용하기 위해서는 파이썬 3.12 이상의 버전이 필요합니다. 혹시 이전 버전의 파이썬을 사용해야 한다면 장고 5를 사용하는 것을 고려해볼 수 있습니다. 가장 먼저 가상 환경을 설정하는 것이 좋습니다. 가상 환경은 프로젝트별로 필요한 라이브러리를 격리하여 관리할 수 있게 해줍니다. venv를 사용하여 가상 환경을 만들고 활성화한 후, pip를 사용하여 장고를 설치합니다. 명령어는 다음과 같습니다.

pip install django

이 명령어를 실행하면 장고의 핵심 라이브러리와 프로젝트 관리에 필요한 `django-admin` 명령줄 유틸리티가 설치됩니다.

새로운 장고 프로젝트 생성 및 앱 구성

장고 프로젝트는 여러 개의 앱으로 구성될 수 있습니다. 프로젝트는 전체 웹 사이트의 설정을 관리하고, 앱은 개별 기능을 담당합니다. 새로운 프로젝트를 생성하려면, 장고가 설치된 가상 환경을 활성화한 후 다음 명령어를 실행합니다.

django-admin startproject myproj

`myproj`는 프로젝트 이름입니다. 프로젝트 이름은 파이썬이나 장고 내부적으로 사용되는 이름과 충돌하지 않도록 주의해야 합니다. 프로젝트가 생성되면, `manage.py` 파일과 함께 프로젝트 이름과 동일한 이름의 하위 디렉터리가 생성됩니다. 이 하위 디렉터리 안에는 `settings.py`, `urls.py`, `wsgi.py`, `asgi.py` 파일이 포함됩니다. 이제 프로젝트가 제대로 작동하는지 확인하기 위해 다음 명령어를 실행합니다.

python manage.py runserver

개발 웹 서버가 시작되고, 웹 브라우저에서 `http://127.0.0.1:8000/`에 접속하면 장고 설치 성공을 알리는 환영 페이지가 표시됩니다. 다음으로, 프로젝트 내부에 앱을 생성합니다. `manage.py` 파일이 있는 디렉터리에서 다음 명령어를 실행합니다.

python manage.py startapp myapp

`myapp`이라는 이름의 앱 디렉터리가 생성됩니다. 이 디렉터리에는 `migrations`, `admin.py`, `apps.py`, `models.py`, `tests.py`, `views.py` 파일이 포함됩니다. 앱을 사용하기 위해서는 먼저 `settings.py` 파일의 `INSTALLED_APPS` 목록에 앱을 등록해야 합니다.

INSTALLED_APPS = [
    "myapp.apps.MyappConfig",
    "django.contrib.admin",
    ...
]

경로와 뷰를 이용한 웹 페이지 만들기

장고에서 웹 페이지를 만들려면 경로(URL)와 뷰 함수를 연결해야 합니다. 클라이언트의 요청이 들어오면 장고는 URL을 파싱하여 해당하는 경로를 찾고, 연결된 뷰 함수를 실행합니다. 뷰 함수는 클라이언트에 응답할 데이터를 반환합니다. 먼저, `myapp` 디렉터리에 `urls.py` 파일을 생성하고 다음과 같이 코드를 작성합니다.

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

이 코드는 루트 URL (`/`)에 대한 요청을 `views.index` 함수에 연결합니다. 이제 `myapp/views.py` 파일을 다음과 같이 수정합니다.

from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world!")

이 코드는 "Hello, world!"라는 문자열을 반환하는 간단한 뷰 함수를 정의합니다. 개발 서버를 재시작한 후 `http://127.0.0.1:8000/myapp/`에 접속하면 웹 브라우저에 "Hello, world!"가 표시됩니다. 경로에 변수를 포함할 수도 있습니다. 예를 들어, `year/` 형식의 URL을 처리하려면 `myapp/urls.py`에 다음 코드를 추가합니다.

path('year/<int:year>/', views.year, name='year'),

그리고 `myapp/views.py`에 다음 함수를 추가합니다.

def year(request, year):
    return HttpResponse(f'Year: {year}')

이제 `http://127.0.0.1:8000/myapp/year/2024/`에 접속하면 "Year: 2024"가 표시됩니다.

템플릿을 활용한 동적 웹 페이지 생성

장고 템플릿 언어를 사용하면 데이터를 기반으로 동적인 웹 페이지를 만들 수 있습니다. 템플릿은 프로젝트의 중심 디렉터리인 `/templates/` 안에 위치합니다. `myapp` 프로젝트의 경우, `myapp/templates/myapp/` 디렉터리에 템플릿 파일을 저장합니다. 예를 들어, `myapp/templates/myapp/year.html` 파일을 생성하고 다음과 같이 작성합니다.

<!DOCTYPE html>
<html>
<head>
    <title>Year</title>
</head>
<body>
    <h1>Year: {{ year }}</h1>
</body>
</html>

이 템플릿은 `year` 변수를 사용하여 동적인 내용을 표시합니다. 이제 `myapp/views.py` 파일을 다음과 같이 수정합니다.

from django.shortcuts import render

def year(request, year):
    context = {'year': year}
    return render(request, 'myapp/year.html', context)

`render` 함수는 템플릿을 찾고 컨텍스트 데이터를 템플릿에 전달하여 HTML 응답을 생성합니다. 템플릿 내에서 `{{ year }}`는 컨텍스트 딕셔너리의 `year` 키 값으로 대체됩니다.

마무리

장고 6.0을 사용한 기본적인 웹 애플리케이션 개발 과정을 살펴보았습니다. 데이터베이스 연동, 사용자 인증, 폼 처리 등 다양한 기능을 제공하며, 강력한 ORM, 템플릿 엔진, 관리자 인터페이스 등을 통해 생산성을 높일 수 있습니다. 이 가이드라인을 통해 장고를 활용한 웹 개발 여정을 시작하시길 바랍니다.

이것도 좋아하실 수 있습니다...