장고 뷰: URL 패턴 및 템플릿 시스템 사용법

2023. 12. 3. 19:36개발 문서/Django

728x90
반응형

장고 뷰: URL 패턴 및 템플릿 시스템 사용법

1. Django 뷰 이해하기

  • Django에서 뷰(View)는 웹 애플리케이션의 비즈니스 로직을 담당하는 부분이다.
  • 클라이언트의 요청에 따라 데이터를 가공하고, 해당하는 템플릿을 렌더링하여 응답을 생성한다.

2. URL 패턴 정의하기

  • urls.py 파일을 통해 어떤 URL이 어떤 뷰 함수와 연결되는지 정의한다.
  • URL 패턴은 정규표현식을 사용하여 유연하게 매칭할 수 있다.
# urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('home/', views.home, name='home'),
    path('article/<int:article_id>/', views.article_detail, name='article_detail'),
]

3. 뷰 함수 작성하기

  • 뷰 함수는 HTTP 요청을 받아 처리하고, 필요한 데이터를 가공하여 템플릿에 전달한다.
  • HttpResponse 객체를 통해 응답을 생성하거나, 특정 템플릿을 렌더링하여 반환한다.
# views.py
from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse
from .models import Article

def home(request):
    articles = Article.objects.all()
    return render(request, 'home.html', {'articles': articles})

def article_detail(request, article_id):
    article = get_object_or_404(Article, pk=article_id)
    return render(request, 'article_detail.html', {'article': article})

4. 템플릿 시스템 활용하기

  • Django의 템플릿 시스템은 HTML 파일에서 동적으로 데이터를 표시할 수 있게 해준다.
  • 템플릿 변수, 필터, 태그 등을 사용하여 템플릿을 작성한다.
<!-- home.html -->
{% for article in articles %}
    <h2><a href="{% url 'article_detail' article.id %}">{{ article.title }}</a></h2>
    <p>{{ article.content }}</p>
{% endfor %}

<!-- article_detail.html -->
<h1>{{ article.title }}</h1>
<p>{{ article.content }}</p>

5. 컨텍스트 변수 전달하기

  • 뷰에서 템플릿으로 데이터를 전달하기 위해 컨텍스트 변수를 활용한다.
  • 필요한 데이터를 딕셔너리 형태로 전달하면 템플릿에서 해당 변수를 사용할 수 있다.
# views.py
def home(request):
    articles = Article.objects.all()
    return render(request, 'home.html', {'articles': articles})

6. URL Reverse 사용하기

  • reverse 함수를 사용하여 URL 패턴의 이름을 이용해 URL을 동적으로 생성할 수 있다.
  • 뷰 함수 내부에서 URL을 하드코딩하지 않고 유지보수성을 높일 수 있다.
# views.py
from django.urls import reverse

def article_detail(request, article_id):
    article = get_object_or_404(Article, pk=article_id)
    url = reverse('article_detail', args=[article.id])
    return render(request, 'article_detail.html', {'article': article, 'url': url})

7. 정적 파일 및 미디어 파일 처리

  • static 디렉토리를 통해 정적 파일을 관리하고, media 디렉토리를 통해 사용자가 업로드한 파일을 관리한다.
  • 템플릿에서 {% load static %}을 통해 정적 파일을 사용할 수 있다.
<!-- home.html -->
{% load static %}

<img src="{% static 'images/example.jpg' %}" alt="Example Image">

8. 결론

Django에서 뷰, URL 패턴, 템플릿 시스템은 웹 애플리케이션의 핵심을 이루는 요소이다. URL 패턴을 통해 어떤 요청이 어떤 뷰로 연결되는지 정의하고, 뷰 함수에서는 비즈니스 로직을 처리하고 템플릿에 데이터를 전달한다. 효율적인 URL 설계와 동적인 템플릿을 통해 Django의 강력한 기능을 최대한 활용하자.