웹/Django

폼 처리하기

밍래그로프 2020. 12. 10. 23:08

장고는 form의 데이터를 전송할 때 오로지 post방식만 사용한다.

모델 클래스 -- 데이터베이스 매칭처럼

폼 클래스 -- input엘리먼트에 매핑됨

데이터가 있는 폼을 bound form

데이터가 없는 폼을 unbound form 이라고 함

 

폼 클래스를 따로 정의해서 view에서 처리한다.

각 input type 별로 필드 타입이 다르다.

예시

text타입은 CharField(label="",max_length=)

textarea 타입은 CharField(label="",max_length=100, widget=forms.Textarea)

 

장고의 모든 폼 클래스는 is_valid()를 통해 유효성 검사를 한다.

유효하면 true를 리턴, cleaned_data 속성에 넣는다.

 

폼 클래스의 렌더링

{{form}} 구문은 label 과 input 엘리먼트 쌍으로 렌더링 된다.

추가적인 옵션

{{form.as_table}} #테이블 렌더링

{{form.as_p}} #p태그 감싸서 렌더링

{{form.as_ul}} #ul로 렌더링

클래스를 만들어서 구현 할때

django.forms 를 import하고

forms.매핑된 엘리먼트

이때

클래스 변수 이름은 렌더링 시 input 태그의 name속성의 값이 된다.
id id_클래스변수명 이다.

예시

message = forms.CharField(max_lenth=100)

checkBox= forms.BooleanField(required=False)