2번째 줄: |
2번째 줄: |
| | | |
| == 개요 == | | == 개요 == |
− | 장고에선 장고 form이라는 개념을 제공해 데이터 입력의 편의성을 제공한다. 장고에서 제공하는, 데이터를 입력받는 기능이다. html을 자동 렌더링해준다. 폼을 통해 DB로의 입력을 제어할 수 있다. | + | 장고에선 장고 form이라는 개념을 제공해 데이터 입력의 편의성을 제공한다. 장고에서 제공하는, 모델과 연동하여 데이터를 입력받는 기능이다. html을 자동 렌더링해준다. 폼을 통해 DB로의 입력을 제어할 수 있다. |
| | | |
| 폼을 만들고 html(탬플릿)에 <nowiki>{{form}}</nowiki> 이라고만 입력하면 자동으로 html 언어로 변환해 보여준다. | | 폼을 만들고 html(탬플릿)에 <nowiki>{{form}}</nowiki> 이라고만 입력하면 자동으로 html 언어로 변환해 보여준다. |
22번째 줄: |
22번째 줄: |
| | | |
| 일반적으로 앱의 forms.py 안에 정의한다. | | 일반적으로 앱의 forms.py 안에 정의한다. |
| + | |
| + | === 기본 형태 === |
| {| class="wikitable" | | {| class="wikitable" |
| |+ | | |+ |
| ! | | ! |
− | !일반폼 | + | !설명 |
− | !모델폼 | + | !코드 |
| |- | | |- |
− | |개요 | + | |모델폼 |
− | |
| |
| |모델에서 사용하는 제약 그대로 사용할 경우 사용한다. | | |모델에서 사용하는 제약 그대로 사용할 경우 사용한다. |
− | |-
| |
− | |기본형태
| |
− | |
| |
| |<syntaxhighlight lang="python"> | | |<syntaxhighlight lang="python"> |
| from django import forms | | from django import forms |
43번째 줄: |
41번째 줄: |
| fields = ['필드1', '필드2',...] # 폼으로 입력할 필드를 입력해준다. | | fields = ['필드1', '필드2',...] # 폼으로 입력할 필드를 입력해준다. |
| # fields에 '__all__'을 따옴표까지 함께 넣어주면 모든 필드를 가져오라는 명령이 된다. | | # fields에 '__all__'을 따옴표까지 함께 넣어주면 모든 필드를 가져오라는 명령이 된다. |
− | </syntaxhighlight> | + | </syntaxhighlight>모델폼에선 사용할 모델을 지정하기 위해 메타클래스가 반드시 필요하다. |
| |- | | |- |
− | | | + | |일반 폼 |
− | | | + | |모델과 별개로 입력값에 대한 유효성검사를 하고 싶을 때 |
− | | | + | (누락, 유효하지 않은 데이터형 등) |
| + | |<syntaxhighlight lang="python"> |
| + | from django import forms |
| + | |
| + | class 폼이름(forms.Form): |
| + | 속성 = forms.필드명() |
| + | 속성2 = forms.필드명() |
| + | </syntaxhighlight>기본적으로 모델과 같은 필드를 사용한다. 다만, blank, null 속성은 없이, 기본적으로 채워넣어야 하는 값으로 인지한다. |
| + | 속성2 = forms.필드명(required=False) 형태로 넣으면 해당 필드는 비어도 된다는 의미. |
| |} | | |} |
| + | 대부분 모델과 연동하여 사용하므로 모델 폼을 중심으로 설명한다. |
| | | |
| === 폼필드 제약 === | | === 폼필드 제약 === |
73번째 줄: |
80번째 줄: |
| | | |
| <nowiki>|</nowiki>default_if_none:<nowiki>''</nowiki> 은 값을 쓰지 않았을 때 <nowiki>''</nowiki>를 담아주기 위한 것. 초기값을 지정할 수도 있다.(이걸 지정하지 않으면 입력하지 않은 값들에 'none'이라는 문자열이 담겨 꼴이 우스워진다) | | <nowiki>|</nowiki>default_if_none:<nowiki>''</nowiki> 은 값을 쓰지 않았을 때 <nowiki>''</nowiki>를 담아주기 위한 것. 초기값을 지정할 수도 있다.(이걸 지정하지 않으면 입력하지 않은 값들에 'none'이라는 문자열이 담겨 꼴이 우스워진다) |
| + | |
| + | == 폼 하위함수 == |
| + | {| class="wikitable" |
| + | !의도 |
| + | !설명 |
| + | !코드 |
| + | |- |
| + | |폼 하위함수 |
| + | |모델의 하위함수로 조작이 가능한 것처럼, 폼에서 반복되는 작업은 폼 하위함수로 처리하면 편하다. |
| + | |<syntaxhighlight lang="python"> |
| + | from django import forms |
| + | |
| + | class 폼이름(forms.Form): |
| + | 속성 = forms.필드명() |
| + | 속성2 = forms.필드명() |
| + | |
| + | def 함수(self): |
| + | '''폼에서 받은 변수는 self.cleaned_data에서 얻어올 수 있다.''' |
| + | 명령(self.cleaned_data['속성'], self.cleaned_data['속성2']) |
| + | </syntaxhighlight> |
| + | |} |
| == 메타클래스 == | | == 메타클래스 == |
| | | |