본문 바로가기
컴퓨터 활용/노년에 즐기는 코딩

자동 렌더링 메서드, 'as_p'

by easyfly 2025. 7. 19.
반응형

자동 렌더링 메서드 'as_p'

{{ form.as_p }}는 Django에서 폼(Form)을 HTML로 자동 렌더링해주는 메서드 중 하나입니다.
as_p는 각 폼 필드를 <p> 태그로 감싸서 출력해 줍니다.

form 자동 렌더링, as_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 적용이 더 용이합니다.

 

반응형

댓글