[파이썬][Django] Django 폼 작성과 사용 방법과 예제

Django에서 폼을 작성하고 사용하는 방법을 설명하겠습니다. Django의 폼은 웹 애플리케이션에서 사용자로부터 데이터를 수집하고 처리하는 데 유용합니다.

폼 작성

  1. 폼 클래스 생성:

    Django에서는 폼을 모델과 비슷한 클래스로 정의합니다. 폼 클래스는 forms.Form을 상속합니다. 필드는 폼 클래스 내에서 정의되며, 각 필드는 사용자로부터 입력을 받을 데이터 유형을 정의합니다.

from django import forms
    
    class MyForm(forms.Form):
        name = forms.CharField(label='이름', max_length=100)
        email = forms.EmailField(label='이메일')
        age = forms.IntegerField(label='나이')
  1. 폼 필드 유효성 검사:

    Django는 폼 필드의 유효성을 자동으로 검사하므로 정의된 필드 유형에 따라 사용자 입력을 유효성 검사합니다. 예를 들어, CharField는 최대 길이를 초과하지 않는지 확인하고, EmailField는 이메일 형식을 검사합니다.

폼 사용

  1. 폼 인스턴스 생성:

    폼 클래스를 기반으로 폼 인스턴스를 생성합니다.

form = MyForm()
  1. 폼 템플릿 렌더링:

    폼을 HTML 템플릿에 렌더링하여 웹 페이지에 표시합니다.

<pre>
<code>

<form method="post">
        {% csrf_token %}
        {{ form.as_p }}
        <button type="submit">제출</button>
    </form>

</code>
</pre>
`{{ form.as_p }}`는 각 필드를 단락(`<p>`) 형식으로 렌더링합니다. 다른 렌더링 형식도 사용 가능합니다.
  1. 폼 데이터 처리:

    사용자가 데이터를 입력하고 제출하면, 폼 데이터를 처리합니다.

if request.method == 'POST':
        form = MyForm(request.POST)
        if form.is_valid():
            # 폼 데이터 유효성 검사 통과
            name = form.cleaned_data['name']
            email = form.cleaned_data['email']
            age = form.cleaned_data['age']
            # 데이터 처리
        else:
            # 폼 데이터 유효성 검사 실패
    else:
        form = MyForm()
`is_valid()` 메서드는 폼 데이터의 유효성을 검사하고, `cleaned_data` 속성을 통해 정제된 데이터를 얻을 수 있습니다.

예제

간단한 폼 예제를 살펴보겠습니다. 이 폼은 이름, 이메일 및 나이를 입력 받습니다.

from django import forms

class MyForm(forms.Form):
    name = forms.CharField(label='이름', max_length=100)
    email = forms.EmailField(label='이메일')
    age = forms.IntegerField(label='나이')

이 폼을 템플릿에 렌더링하고, 제출된 데이터를 처리할 수 있습니다.

<pre>
<code>

<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">제출</button>
</form>

</code>
</pre>

폼을 사용하면 웹 애플리케이션에서 사용자 입력을 쉽게 수집하고 처리할 수 있으며, 입력 데이터의 유효성 검사 및 처리를 Django에게 맡길 수 있습니다.