Django form
Last updated
Last updated
Form은 데이터를 입력할 큰 틀을 만드는데 사용된다. 입력된 데이터를 한번에 서버로 전송하고, 전송한 데이터는 웹 서버가 처리해 결과에 따른 페이지를 보여준다.
action
: form 데이터를 보낼 URL을 지정한다.
enctype
: 파일을 넘길 때 주로 사용한다.
method
: form을 서버로 전송하는 http 방식을 지정한다. (GET/POST)
name
: form을 식별할 이름 지정
target
: action에서 지정한 스크립트 파일이 현재나 다른 위치에서 열리도록 한다.
accept-charset
: form 전송에 사용할 문자 인코딩 지정
장고의 가장 큰 장점 중 한가지 이다. Model 클래스와 유사하게 Form 클래스를 정의한다.
Form
클래스는 Django Form 관리 시스템의 핵심으로 다음과 같은 역할을 한다.
입력 폼 생성 : as_table()
,as_p()
, as_ul()
기본제공
유효성 검증(Validation)
검증에 통과한 값을 dictionary type
으로 제공(cleaned_data
)
Form : 직접 필드 정의, 위젯 설정이 필요하다
Model Form : 모델과 필드를 지정하면 모델폼이 자동으로 field를 생성한다.
class Meta
는 폼을 만들기 위해서 어떤 모델이 쓰여야하는지 장고에 알려주는 구문이다.
Form fields는 HTML Form Fields를 파이썬 클래스화 한것이다.
기본적인 유효성 검사는 값의 유무이다. forms.ValidationError
로 예외발생 유무를 처리한다.
해당 필드의 clean_<fieldname>()
메소드를 추가해 검증된 입력값을 반환하거나 옳지 않은경우 ValidationError를 발생시킬 수 있다.
_()
여기서_
는gettext()
,gettext_lazy()
이다.
validators는 form보다 Model에 적용하는 것이 좋다.
설명 |
---|
에서 더 자세히 살펴볼 수 있다.
form.is_valid() | 폼의 입력값이 올바른지 확인 |
form.is_bound | 사용자 입력값이 있는지 확인 |
form.data | 사용자가 입력한 폼 데이터 |
form.cleaned_data | 검사를 통과한 폼 데이터 |
form.as_p() |
|
form.as_ul() |
|
form.as_table() |
|