Django Form을 템플릿에 출력할 때
{{ form.as_ul }}과 같은 방식은 입력 필드뿐만 아니라
유효성 검증 결과까지 자동으로 처리해줍니다.
이번 글에서는 form.as_ul이 어떤 역할을 하는지,
그리고 직접 에러 메시지를 출력하는 방식과 어떤 차이가 있는지
간단한 예제를 통해 정리해보겠습니다.
1. Django form.as_ul과 자동 Validation 출력
Django에서 Form을 템플릿에 렌더링할 때
{{ form.as_ul }}, {{ form.as_p }}, {{ form.as_table }} 같은 방식을 사용하면
유효성 검증 결과까지 자동으로 처리해줍니다.
{{ form.as_ul }}
이 방식은 단순히 입력 필드만 그려주는 것이 아니라,
- Form / Model에서 발생한 validation 실행
- 에러 메시지를 각 필드에 자동으로 매핑
- <ul><li> 구조로 에러까지 함께 렌더링
까지 한 번에 처리해줍니다.
2. 직접 에러를 출력하는 방식과의 차이
아래와 같이 Form 필드별로 에러를 직접 출력할 수도 있습니다.
{% for error in form.title.errors %}
<p>{{ error }}</p>
{% endfor %}
<form method='post'>{% csrf_token %}
<h3>제목</h3>
<p>{{form.title}}</p>
{% for error in form.title.errors %}
<p>{{error}}</p>
{% endfor %}
<h3>내용</h3>
<p>{{form.content}}</p>
{% for error in form.content.errors %}
<p>{{error}}</p>
{% endfor %}
<input type='submit' value='전송'>
</form>
이 방식의 특징은 다음과 같습니다.
- 에러 출력 위치와 HTML 구조를 자유롭게 제어 가능
- UI를 세밀하게 커스터마이징할 수 있음
- 대신 코드가 조금 길어짐
반면 form.as_ul은 빠르게 Form + Validation 결과를 확인할 때 매우 편리합니다.
3. 언제 form.as_ul을 쓰면 좋을까?
✔️ Form 구조가 단순할 때
✔️ 기본적인 에러 출력만 필요할 때
✔️ 관리자 페이지, 테스트 화면, 예제 코드
✔️ Validation 흐름을 빠르게 확인하고 싶을 때
UI를 세밀하게 다뤄야 한다면 직접 에러를 출력하는 방식이 더 적합합니다.
4. 정리하면
{{ form.as_ul }}은 Django가 제공하는 자동 Form 렌더링 방식
Form / Model validation 결과를 자동으로 화면에 출력
빠르고 편리하지만 UI 제어에는 한계가 있음
실무에서는 초기 개발 단계에서는 as_ul,
서비스 화면에서는 수동 렌더링을 많이 사용'Django 프론트& 백엔드 개발' 카테고리의 다른 글
| Django 수정(View)에서 request.POST와 instance를 함께 사용하는 이유 (0) | 2026.01.11 |
|---|---|
| Django ModelForm으로 Form 위젯 커스터마이징하기 (0) | 2026.01.11 |
| Django Form에서 유효성 검증 (0) | 2026.01.11 |
| Django 모델에서 기본 Validator와 Custom Validator 함께 사용하기 (0) | 2026.01.11 |
| Model 단계에서의 유효성 검사 (1) | 2026.01.11 |