바뀜

1,338 바이트 추가됨 ,  2023년 1월 10일 (화) 18:05
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>
 +
|}
 
== 메타클래스 ==
 
== 메타클래스 ==