[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코드에 지정한 오류가 표시 된다.
'프로그래밍 > Python' 카테고리의 다른 글
[Django] Form 필드의 기본 유효성 오류 메시지 변경하기 (0) | 2021.01.03 |
---|---|
[Django] 장고에서 패스워드 체크 함수 check_password 사용하기 (0) | 2021.01.03 |
[Django] Form-Template 연동시 폼필드 커스터마이징 하기 (0) | 2021.01.02 |
[Django] Form 사용 - 매커니즘 (0) | 2021.01.02 |
장고[Django] 암호화 인증키 지정 csrf_token (0) | 2020.12.28 |