본문 바로가기

프로그래밍/Python

[Django] Form-Template 연동시 폼필드 커스터마이징 하기

참고 : form-Template 연동 매커니즘

FORM 사용 사례를 Login Form을 예로 들어 작성해 보자

FORM을 이용하는 다른 기능들도 아래와 같은 구조를 활용하여 변경하여 사용하면 된다.


* LoginForm Class

class LoginForm(forms.Form):
    username = forms.CharField(max_length=32)
    password = forms.CharField()

1. 기본 FORM 전달 {{ form }}


2. 폼내 필드 표시 커스터마이징 : {% for field in form %}  ... {% endfor %}


{% for field in form %}
<div class="form-group">
   <labl for=""></labl>
   <input type="" class="form-control" id="" placeholder="" name="">
</div>
{% endfor %}


3. 폼필드 상세정보 반영하기


[forms.py]

from django import forms


class LoginForm(forms.Form):
    username = forms.CharField(max_length=32, label="사용자 이름")
    password = forms.CharField(widget=forms.PasswordInput(), label="비밀번호")



[login.html]

<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>
    {% endfor %}
    <button class="btn btn-primary">로그인</button>
</form>