if request.method=='GET'
과 같은 조건을 달고 로직 구성# 함수형뷰 예제
from django.http import HttpResponse
def my_view(request):
if request.method == 'GET' :
# 로직작성
return HttpResponse('result')
if request.method == 'POST' :
# 로직작성
return HttpResponse('result')
.as_view()
메서드와 함께 사용# 클래스형뷰 예제
from django.http import HttpResponse
from django.views import View
class MyView(View):
def get(self, request):
# 로직작성
return HttpResponse('result')
def post(self, request):
# 로직작성
return HttpResponse('result')
def head(self, *args, **kwargs):
# 로직구현
return HttpResponse('')
.as_view(인자)
진입 메서드로 클래스의 인스턴스를 생성, 인스턴스는 dispatch()
메서드를 호출.
dispatch()
는 GET, POST 등 HTTP method를 구분하여 해당 인스턴스 내의 get, post등 메서드로 중계를 한다.
만약 해당 메서드가 구현되지 않았을 경우 HttpResponseNotAllowed 예외 발생
# urls.py
from django.urls import path
urlpatterns = [
path('', MyView.as_view(인자), name='my_view'),
]
as_view(
여기에는 뭐가 들어갈까?)
!
인자로 전해지는 것은 해당 뷰에게 전달될 인자가 된다!
만약 뷰 로직 구현하는데 필요한 것이 있다면 인자로 넘겨주도록 한다.
장고에서 자주쓰는 뷰를 미리 만들어 제공, 제네릭 뷰라고 한다. 클래스 형으로 구현되어 있기 때문에 상속받아 사용한다.