[파이썬][Django] 폼 유효성 검사 및 오류 처리 방법과 예제

Django에서 폼 유효성 검사 및 오류 처리를 수행하는 방법과 예제를 설명하겠습니다. Django는 폼 데이터의 유효성을 검사하고 오류를 처리하는 강력한 기능을 제공합니다.

폼 유효성 검사

  1. 폼 클래스 생성:

    먼저, 폼 클래스를 정의합니다. 필요한 필드를 정의하고 각 필드에 대한 유효성 검사 규칙을 설정합니다.

from django import forms
    
    class MyForm(forms.Form):
        name = forms.CharField(label='이름', max_length=100)
        email = forms.EmailField(label='이메일')
        age = forms.IntegerField(label='나이')
  1. 뷰에서 폼 처리:

    폼 데이터를 뷰에서 처리할 때, request.method를 확인하여 POST 요청에서만 폼을 처리하고, form.is_valid()를 사용하여 데이터의 유효성을 검사합니다.

from django.shortcuts import render
    
    def my_view(request):
        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:
                # 유효하지 않은 데이터 처리 (오류 발생)
                return render(request, 'my_template.html', {'form': form})
        else:
            form = MyForm()
        return render(request, 'my_template.html', {'form': form})

오류 처리 및 템플릿 렌더링

  1. 템플릿에 오류 메시지 표시:

    폼 유효성 검사에서 오류가 발생하면, 이러한 오류를 템플릿에 표시할 수 있습니다. 폼 필드의 오류 메시지는 form.field_name.errors를 통해 접근할 수 있습니다.

<pre>
<code>

<form method="post">
        {% csrf_token %}
        {{ form.as_p }}
        <button type="submit">제출</button>
    </form>
    
    {% if form.errors %}
    <ul class="errorlist">
        {% for field, errors in form.errors.items %}
            <li>{{ field }}: {{ errors }}</li>
        {% endfor %}
    </ul>
    {% endif %}

</code>
</pre>
위의 예제에서는 폼 오류가 발생하면 해당 오류를 목록으로 나열합니다.

예제

간단한 예제로, 이름 필드가 비어 있을 경우 오류를 표시하는 폼을 만들어 보겠습니다.

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>

{% if form.errors %}
<ul class="errorlist">
    {% for field, errors in form.errors.items %}
        <li>{{ field }}: {{ errors }}</li>
    {% endfor %}
</ul>
{% endif %}

</code>
</pre>

이렇게 하면 폼의 유효성 검사 및 오류 처리를 구현할 수 있습니다. Django는 폼 처리를 단순화하고 사용자에게 오류 메시지를 표시하는 데 편리한 방법을 제공합니다.