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의 뷰와 템플릿 기능은 웹 애플리케이션 개발에 매우 유용한 도구입니다.