장고 폼(Form) 처리하기
장고 폼이란?
장고 폼은 사용자로부터 데이터를 입력받고 처리하는 기능을 제공하는 도구입니다. 폼은 HTML <form> 태그와 비슷하지만, 장고의 폼 시스템은 데이터 유효성 검사와 자동화된 HTML 생성 등을 지원합니다. 장고 폼은 주로 forms.py 파일에서 정의되며, ModelForm과 Form 클래스를 통해 다양한 방식으로 작성할 수 있습니다. 장고 폼은 사용자 입력에 대한 유효성 검사를 자동으로 처리하여 보안을 강화하고 오류를 줄이는 데 유용합니다.
폼 클래스 정의하기
장고에서 폼을 사용하려면 forms.py 파일에 폼 클래스를 정의해야 합니다. 기본적으로 forms.Form을 상속받아 폼 필드를 정의합니다. 예를 들어, name = forms.CharField(max_length=100)처럼 폼 필드를 정의하고, 다양한 입력 필드를 추가할 수 있습니다. 또한, 필드에 유효성 검사, 기본값, 위젯 설정 등을 추가할 수 있습니다. 이를 통해 사용자가 제출한 데이터를 쉽게 처리하고 검증할 수 있습니다.
폼 처리하기 (GET/POST 요청)
폼을 사용하는 과정은 주로 두 가지 HTTP 메서드(GET과 POST)를 통해 이루어집니다. GET 요청은 폼을 보여주는 데 사용하고, POST 요청은 폼 데이터를 제출하여 서버에서 처리하는 데 사용됩니다. 뷰 함수에서 request.method == 'POST'로 요청을 확인하고, form.is_valid()로 폼이 유효한지 체크한 후 데이터를 처리합니다. 유효성 검사가 통과되면, 데이터를 저장하거나 다른 처리를 할 수 있습니다.
폼 데이터 유효성 검사
장고 폼의 가장 중요한 특징 중 하나는 유효성 검사입니다. 각 폼 필드는 required, max_length, validators와 같은 속성으로 유효성 검사를 자동으로 수행합니다. 예를 들어, email = forms.EmailField()와 같이 이메일 필드를 정의하면, 사용자가 올바른 이메일 형식으로 입력하지 않으면 자동으로 오류 메시지를 표시합니다. form.is_valid()를 호출하면 장고가 폼의 모든 필드에 대해 유효성 검사를 수행하고, 오류가 있으면 form.errors에 오류 메시지를 추가합니다.
폼 렌더링 및 제출하기
장고 폼은 템플릿에서 쉽게 렌더링할 수 있습니다. 템플릿에서 {{ form }}을 사용하면, 폼의 필드를 HTML로 자동 생성하여 사용자에게 보여줄 수 있습니다. 또한, {{ form.as_p }}, {{ form.as_table }}, {{ form.as_ul }}와 같은 형식으로 폼을 렌더링할 수 있습니다. 폼을 제출할 때는 HTML <form> 태그 내에 method="post" 속성과 csrf_token을 추가하여 보안을 강화합니다. 폼을 제출하면 POST 요청으로 서버에 전송되어, 해당 데이터를 처리하고 결과를 반환할 수 있습니다.