컴퓨터 활용/노년에 즐기는 코딩
자동 렌더링 메서드, 'as_p'
easyfly
2025. 7. 19. 07:44
반응형
자동 렌더링 메서드 'as_p'
{{ form.as_p }}는 Django에서 폼(Form)을 HTML로 자동 렌더링해주는 메서드 중 하나입니다.
as_p는 각 폼 필드를 <p> 태그로 감싸서 출력해 줍니다.

✅ 의미
{{ form.as_p }}
- form은 forms.py에서 정의한 Form 클래스의 인스턴스입니다.
- as_p는 그 폼 안의 필드들을 <p> 태그로 묶어서 출력하는 메서드입니다.
- 결과는 다음과 같은 형태의 HTML로 바뀝니다:
<p>
<label for="id_subject">제목:</label>
<input type="text" name="subject" id="id_subject">
</p>
<p>
<label for="id_content">내용:</label>
<textarea name="content" id="id_content"></textarea>
</p>
🔍 그 외의 렌더링 방법
Django는 as_p 외에도 다음과 같은 메서드를 제공합니다:
표현식 설명
| {{ form.as_p }} | <p> 태그로 각 필드를 감쌈 |
| {{ form.as_table }} | <tr> 태그로 감싸 테이블 형식으로 출력 |
| {{ form.as_ul }} | <li> 태그로 감싸 리스트 형식으로 출력 |
✅ 예시: forms.py
from django import forms
class QuestionForm(forms.Form):
subject = forms.CharField(label='제목', max_length=200)
content = forms.CharField(label='내용', widget=forms.Textarea)
✅ 예시: question_form.html
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">등록하기</button>
</form>
✍️ 직접 필드를 렌더링 하고 싶다면?
as_p 대신 직접 필드별로 출력할 수도 있습니다:
<p>
{{ form.subject.label_tag }}<br>
{{ form.subject }}
{{ form.subject.errors }}
</p>
<p>
{{ form.content.label_tag }}<br>
{{ form.content }}
{{ form.content.errors }}
</p>
이 방법은 커스터마이징이 자유롭고, HTML 구조나 CSS 적용이 더 용이합니다.
반응형