폼을 보여주고, 사용자 입력을 받고, 입력 검증(validation)을 수행, 데이터 저장 등의 기능 구현
GET 요청을 처리하여 폼을 보여준다.
POST 요청을 처리하여 사용자 입력을 검증하고 데이터를 저장
폼을 제출하기 위한 HTML 템플릿, 폼의 필드들을 정의하는 폼 클래스 필요
FormView는 form_class 속성으로 폼 클래스 지정
template_name으로 HTML 템플릿을 지정
검증이 성공하면 form_valid() 메소드 호출
검증이 실패하면 form_invalid() 메소드 호출
get_form_kwargs 메소드를 오버라이드하여 폼 생성 시 인자 추가 가능
get_success_url 메소드를 오버라이드하여 데이터 저장 후 리다이렉트할 URL을 동적으로 생성
from django.views.generic.edit import FormView
from django.urls import reverse_lazy
from django.contrib import message
from .forms import ExampleForm
class ExampleFormView(FormView):
template_name: 'example.html'
form_class = ExampleForm
success_url = reverse_lazy('example')
def form_valid(self, form):
form.send_email()
messages.success(self.request, ' 메시지 전송')
return super().form_valid(form)
def form_invalid(self, form):
messages.error(self.request, '전송 실패')
return super().form_invalid(form)