본문 바로가기

프로그래밍/Python

[Django] HTML 템플릿내에서 Form Class의 is_valid호출시 오류를 받아 처리하기

[Django] HTML 템플릿내에서 Form Class의 is_valid호출시 오류를 받아 처리하기


views.py에서 Form Class를 호출하고 결과를 적절히 처리하기

Django의 From 클래스에서 각 필드의 입력값 요성을 검토하기 위한 함수 제공

form.is_valid()


views.py (VIEW)

def login(request):
    if request.method == 'POST':
        form = LoginForm(request.POST)
        if form.is_valid():  # Django의 Form 클래스에서 제공하는 유효성 체크 함수
            return redirect('/')
    else:
        form = LoginForm()

    return render(request, 'login.html', {'form': form})


is_valid 호출시 오류가 발견되면 form클래스의 errors (form.errors)에 오류 내역이 담긴다.

이것을 Template HTML문내에서 표현해 줄 수 있다.

처리는는 {% if field.errors % } ... {% endif %} 지시어 사이에 두면 된다.


login.html (TEMPLATES)

<form method="POST" action="">
    {% csrf_token %}
    {% for field in form %}
    <div class="form-group">
        <labl for="{{ field.id_for_label }}">{{ field.label }}</labl>
        <input type="{{ field.field.widget.input_type }}" class="form-control"
            id="{{ field.id_for_label }}" placeholder="{{ field.label }}" name="{{ field.name }}">
    </div>
    {% if field.errors %}
    <span style="colro: red">{{ form.errors }} </span>
    {% endif %}

    {% endfor %}
    <button class="btn btn-primary">로그인</button>
</form>


사용자 이름을 비워둔 상태로 "로그인" 버튼 클릭시 HTML코드에 지정한 오류가 표시 된다.