(2023.3.15) Today_I_Learned_day-143

imRound·2023년 3월 15일
0
post-thumbnail

FormView

  • 폼을 보여주고, 사용자 입력을 받고, 입력 검증(validation)을 수행, 데이터 저장 등의 기능 구현

  • GET 요청을 처리하여 폼을 보여준다.

  • POST 요청을 처리하여 사용자 입력을 검증하고 데이터를 저장

  • 폼을 제출하기 위한 HTML 템플릿, 폼의 필드들을 정의하는 폼 클래스 필요

  • FormView는 form_class 속성으로 폼 클래스 지정

  • template_name으로 HTML 템플릿을 지정

  • 검증이 성공하면 form_valid() 메소드 호출

    • 데이터 저장하고 리다이렉트
  • 검증이 실패하면 form_invalid() 메소드 호출

    • 오류 메시지를 템플릿에 전달하여 오류 메시지 출력
  • get_form_kwargs 메소드를 오버라이드하여 폼 생성 시 인자 추가 가능

  • get_success_url 메소드를 오버라이드하여 데이터 저장 후 리다이렉트할 URL을 동적으로 생성

    • 폼에서 입력한 데이터의 특정 필드 값을 이용하여 URL 생성
    • 현재 요청된 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)
profile
Django 개발자

0개의 댓글