당신은 멋쟁이, 우리는 장고쟁이~

0%

Django Forms 8편 - Django 에서 폼만들기 1

The Form Class


우리는 이미 우리가 필요한 HTML 폼이 어떻게 보여질지 알고 있습니다.


1
2
3
4
5
<form action="/your-name/" method="post">
<label for="your_name">Your name: </label>
<input id="your_name" type="text" name="your_name" value="{{ current_name }}">
<input type="submit" values="OK">
</form>

해당 폼을 Django 에서 사용하기 위한 시작점은 아래와 같습니다.

앱 안에서 사용될 Django 폼을 만드려면,


forms.py


해당 앱안에 forms.py 파일을 만들어 줍니다. 그리고 아래와 같이 작성해 줍니다.


1
2
3
4
from django import forms 

class NameForm(forms.Form):
your_name = forms.CharField(label="Your name", max_length=100)

이 폼 클래스는, 하나의 필드 your_name 을 가진 하나의 폼 클래스를 정의합니다.


폼 클래스의 필드에서 우리는, 사람에게 친숙한 레이블을 필드에 적용해 주었씁니다 (이 경우에는, 우리가 지정한 label 의 경우 우리가 빠트렸어도 자동으로 생성되었을 것이긴 합니다)


필드의 최대 허용 길이는 max_length 로 정의 됩니다. 이것은 두가지 일을 합니다.



  • max_length=100 으로 HTML <input> 태그에 지정하여, 브라우저가 사용자가 해당길이 이상으로 입력하는것을 방지 합니다.
  • 또한, Django 가 폼을 브라우저에서 다시 받을때에, 데이터의 길이에 대한 유효성을 체크 할겁니다


is_valid() 메서드


하나의 Form 인스턴스는 is_valid() 메서드를 가지고 있습니다

이 메서드는, 폼안에 있는 모든 필드의 검증 루틴을 실행합니다

이 메서드가 호출 되었을때, 모든 필드가 유효한 데이터를 가지고 있는 경우,

  • True 를 리턴합니다
  • 그리고, 폼의 데이터를 cleaned_data 속성에 넣어놓습니다

Django 폼 클래스 전체가 처음으로 브라우저에 렌더링 될때에는, 아래와 같이 보일겁니다.


1
2
<label for="your_name">Your name: </label>
<input id="your_name" type="text" name="your_name" maxlength="100" required>


주의할점은, <form> 태그 혹은 submit 버튼은 포함되지 않는다는것을 숙지해야 합니다. 이런것들은 우리가 스스로 템플릿에 넣어줘야 합니다.