[파이썬][Django] 폼 처리 함수 사용 방법과 예제

Django에서 폼 데이터를 처리하는 함수를 사용하는 방법과 예제를 제공하겠습니다. 폼 처리 함수를 사용하여 폼 데이터를 저장하거나 다른 작업을 수행할 수 있습니다.

  1. 폼 클래스 생성

    먼저, 폼 데이터를 처리하기 위해 폼 클래스를 정의합니다. 폼 클래스는 Django의 forms 모듈을 사용하여 생성합니다. 예를 들어, 간단한 연락처 폼을 만들어보겠습니다.

# myapp/forms.py
    
    from django import forms
    
    class ContactForm(forms.Form):
        name = forms.CharField(max_length=100)
        email = forms.EmailField()
        message = forms.CharField(widget=forms.Textarea)
  1. 폼 처리 함수 작성

    폼 데이터를 처리하기 위한 함수를 작성합니다. 이 함수는 보통 POST 요청을 처리하며, 폼 데이터가 유효한 경우 추가 작업을 수행합니다. 예를 들어:

# myapp/utils.py
    
    from myapp.forms import ContactForm
    
    def process_contact_form(request):
        if request.method == 'POST':
            form = ContactForm(request.POST)
            if form.is_valid():
                # 유효성 검사 통과 시 폼 데이터 처리
                name = form.cleaned_data['name']
                email = form.cleaned_data['email']
                message = form.cleaned_data['message']
                # 데이터 처리 작업 수행
                # 예: 데이터 저장, 이메일 전송 등
            else:
                # 유효성 검사 실패 시 오류 처리
                # 예: 오류 메시지 표시
                pass
        else:
            form = ContactForm()
        return form
이 함수에서는 `is_valid()` 메서드를 사용하여 폼 데이터의 유효성을 확인하고, 유효한 경우 데이터 처리 작업을 수행합니다.
  1. 뷰 함수 작성

    폼 처리 함수를 뷰 함수에서 호출하고, 폼 데이터를 처리한 결과를 템플릿에 전달합니다.

# myapp/views.py
    
    from myapp.utils import process_contact_form
    from django.shortcuts import render
    
    def contact_view(request):
        form = process_contact_form(request)
        return render(request, 'contact_template.html', {'form': form})
  1. 템플릿 작성

    폼을 렌더링하기 위한 템플릿을 작성합니다.

<pre>
<code>

<!-- myapp/templates/contact_template.html -->
    
    <form method="post">
        {% csrf_token %}
        {{ form.as_p }}
        <button type="submit">Submit</button>
    </form>

</code>
</pre>
이 템플릿은 폼을 렌더링하고, 데이터 처리 결과를 표시할 수 있습니다.
  1. 오류 메시지 표시 (선택 사항)

    폼 데이터 처리 중 오류 메시지를 표시하려면 템플릿에 오류 메시지를 추가합니다. 이는 유효성 검사에 실패한 경우에 유용합니다.

<pre>
<code>

<!-- myapp/templates/contact_template.html -->
    
    <form method="post">
        {% csrf_token %}
        {{ form.as_p }}
        <button type="submit">Submit</button>
    </form>
    
    {% if form.errors %}
        <div class="error">
            <p>{{ form.errors }}</p>
        </div>
    {% endif %}

</code>
</pre>
이렇게 하면 폼 유효성 검사 오류 메시지가 표시됩니다.

이제 폼 데이터를 처리하는 함수를 사용하여 Django 애플리케이션에서 사용자 입력 데이터를 저장하거나 처리할 수 있습니다. 이를 통해 사용자로부터 입력된 데이터를 안전하게 다룰 수 있습니다.