Django - 폼 처리하기

Django 의 폼 기능

Django 는 폼 기능들을 단순화하고 자동화해서 직접 개발하는 것보다 훨씬 안전하게 처리해준다. 이를 위하여 아래와 같은 3가지 기능을 Django에서는 제공하고 있다.

  • 폼 생성에 필요한 데이터를 폼 클래스로 구조화하기
  • 폼 클래스의 데이터를 렌더링하여 HTML 폼 만들기
  • 사용자로부터 제출된 폼과 데이터를 수신하고 처리하기

폼 클래스로 폼 생성

from django import forms

class NameForm(forms.Form):  
    your_name = forms.CharField(label='Your name', max_length=100)
  • label 속성은 렌더링 될 때
  • max_length 속성은 100 글자 이상 입력을 브라우저에서 방지하기도 하고, 서버에서 유효성 검사도 수행한다.
  • 각각의 폼 필드는 기본 위젯 클래스를 가지고 있다.

    • 위 예제에서의 CharField 필드 타입은 <input type="text"> 에 대응된다.
    • 기본 위젯을 변경하기 위해서는 widget 속성을 정의한다.

      your_name = forms.CharField(label="Your name", max_length=100, widget=forms.Textarea)
      
렌더링 결과
<label for="your_name">Your name: </label>  
<input id="your_name" type="text" name="your_name" max_length="100">  
템플릿에서의 사용
<form action="/your-name/" method="post">  
    {% csrf_token %>
    {{ form }}
    <input type="submit" value="Submit" />
</form>  
  • 태그나 submit 버튼은 직접 템플릿에 코드를 넣어줘야 한다.