[파이썬] Django의 뷰와 템플릿 작성

Django는 Python 기반의 웹 애플리케이션 프레임워크로, 뷰와 템플릿을 사용하여 동적인 웹 페이지를 생성하는 데 매우 강력한 기능을 제공합니다. 이번 포스트에서는 Django의 뷰와 템플릿 작성에 대해 알아보겠습니다.

1. 뷰(View) 작성하기

뷰는 웹 요청을 처리하고 클라이언트에게 응답을 보내는 역할을 합니다. 뷰는 일반적으로 views.py 파일에 작성되며, 함수 기반 뷰(Function-based view)와 클래스 기반 뷰(Class-based view)로 나눌 수 있습니다. 여기서는 함수 기반 뷰를 예로 들어 설명하겠습니다.

from django.shortcuts import render
from django.http import HttpResponse

def hello(request):
    return HttpResponse("Hello, Django!")

위의 코드는 간단한 뷰 함수 hello를 정의한 예제입니다. 이 함수는 HttpResponse 객체를 반환하는데, 이를 통해 클라이언트에게 “Hello, Django!”라는 메시지를 보냅니다.

2. URL 매핑하기

뷰를 작성했다면, 해당 뷰를 어떤 URL에 매핑할지 설정해야 합니다. 이는 Django의 URL 매핑 시스템을 사용하여 수행할 수 있습니다. URL 매핑은 일반적으로 urls.py 파일에서 처리됩니다.

from django.urls import path
from . import views

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

위의 예제 코드에서는 path() 함수를 사용하여 /hello/ URL에 hello 뷰를 매핑하고 있습니다. 이제 /hello/ URL에 요청이 들어오면 hello 뷰가 실행되어 “Hello, Django!” 메시지를 반환합니다.

3. 템플릿(Template) 작성하기

템플릿은 웹 페이지의 디자인과 구조를 정의하는 HTML 코드와 Django 템플릿 언어(Template language)를 사용하여 동적인 데이터를 표현하는 데 사용됩니다. 템플릿 파일은 일반적으로 templates 폴더에 저장됩니다.

<!-- hello.html -->
<!DOCTYPE html>
<html>
<head>
    <title>Hello Django</title>
</head>
<body>
    <h1>Hello, Django!</h1>
</body>
</html>

위의 예제는 간단한 템플릿 파일인 hello.html입니다. 이 템플릿은 “Hello, Django!”라는 메시지를 표시하는 간단한 HTML 페이지를 나타냅니다.

4. 뷰와 템플릿 연동하기

이제 뷰와 템플릿을 연동하여 동적인 웹 페이지를 생성하는 방법을 알아보겠습니다. 템플릿을 사용하기 위해서는 render() 함수를 사용해야 합니다.

from django.shortcuts import render

def hello(request):
    return render(request, 'hello.html')

위의 코드에서는 render() 함수를 사용하여 hello.html 템플릿을 렌더링하고, 그 결과를 클라이언트에게 반환하고 있습니다.

5. 템플릿에서 데이터 전달하기

템플릿은 동적인 데이터를 표현하기 위해 컨텍스트(Context)라는 개념을 사용합니다. 컨텍스트는 뷰에서 템플릿으로 전달되는 변수들의 집합을 의미합니다.

from django.shortcuts import render

def hello(request):
    context = {'name': 'Django'}
    return render(request, 'hello.html', context)

위의 코드에서는 context 변수에 name이라는 키를 가진 값인 'Django'를 설정하고 있습니다. 이를 템플릿에서 사용하기 위해서는 다음과 같이 템플릿 파일을 수정해야 합니다.


<!-- hello.html -->
<!DOCTYPE html>
<html>
<head>
    <title>Hello Django</title>
</head>
<body>
    <h1>Hello, {{ name }}!</h1>
</body>
</html>

{{ name }}은 Django 템플릿 언어의 문법으로, name 변수의 값을 출력하는 역할을 합니다. 따라서 위의 예제에서는 “Hello, Django!”라는 메시지 대신 “Hello, {{ name }}!”라는 템플릿 태그가 렌더링됩니다.

마무리

Django의 뷰와 템플릿 작성에 대해 알아보았습니다. 이제 뷰를 작성하고 URL에 매핑하여 템플릿을 렌더링하는 동적인 웹 페이지를 생성할 수 있게 되었습니다. Django의 뷰와 템플릿 기능은 웹 애플리케이션 개발에 매우 유용한 도구입니다.