Menu
CoddyTech

뷰 클래스

Coddy Django 여정의 클래스 기반 뷰 섹션에 포함된 레슨. 18개 중 1번째.

이 섹션에서는 구인 게시판을 만들며, 지금까지의 모든 뷰와 마찬가지로 홈페이지는 함수형 뷰입니다. Django에서는 뷰를 클래스로 작성할 수도 있습니다. View를 상속하고 HTTP 메서드마다 메서드 하나를 추가하면 됩니다. GET 요청은 get()을 호출하고, POST 요청은 post()를 호출합니다.

from django.views import View


class RecipeCountView(View):
    def get(self, request):
        total = Recipe.objects.count()
        return HttpResponse(f"{total} recipes")

함수형 뷰와 마찬가지로 메서드는 self와 request를 인수로 받고 응답을 반환합니다. 경로에는 함수가 필요하며, .as_view()는 클래스에서 함수를 만듭니다. path("count/", views.RecipeCountView.as_view()). 요청이 올 때마다 이 함수는 해당 클래스의 새 객체를 만들고 요청에 해당하는 메서드를 호출합니다.

이 뷰에 대한 POST 요청처럼 클래스에서 정의하지 않은 메서드의 요청에는 405 Method Not Allowed 응답이 반환됩니다. 다음 내용에서 그 이점이 드러납니다. Django에는 흔히 하는 작업을 이미 처리하는 클래스가 포함되어 있습니다.

challenge icon

챌린지

쉬움

홈 페이지를 클래스로 바꾸세요.

  1. jobs/views.py에서 함수 home을 HomeView로 바꾸세요. HomeView는 home이 하던 일을 하는 get()을 가진 View입니다.
  2. jobs/urls.py에서 경로가 클래스를 가리키도록 하세요. name="home"은 그대로 두세요.

‘실행’을 누르세요. 홈 페이지에는 여전히 12 jobs open이라고 표시됩니다.

직접 해보기

from django.shortcuts import render

from .models import Job


def home(request):
    count = Job.objects.count()
    return render(request, "jobs/home.html", {"count": count})

클래스 기반 뷰의 모든 레슨

직접 연습해 보세요: Django 플레이그라운드