Django의 forms.Form과 forms.ModelForm
그 누구도 날 유사점과 장고의 차이로 설명 할 수 forms.Form
및 forms.ModelForm
?
에서 만든 양식은 사용자 forms.Form
가 수동으로 구성합니다. 모델과 직접 상호 작용하지 않는 양식에 사용하는 것이 좋습니다. 예를 들어, 데이터베이스와 상호 작용할 필요는없는 연락처 양식 또는 뉴스 레터 구독 양식이 있습니다.
생성 된 양식 forms.ModelForm
이 자동으로 생성 된 다음 나중에 사용자가 수정할 수있는 위치입니다. 가장 좋은 예는 Django 웹 사이트에서 제공하는 훌륭한 문서에서 나온 것입니다.
forms.Form
:
문서 : 양식 객체 다음
을 사용하여 만든 일반 양식의 예 forms.Form
:
from django import forms
class ContactForm(forms.Form):
subject = forms.CharField(max_length=100)
message = forms.CharField()
sender = forms.EmailField()
cc_myself = forms.BooleanField(required=False)
forms.ModelForm
:
문서 : 문서 에서 바로 모델
에서 양식 만들기 :
양식이 Django 모델을 직접 추가하거나 편집하는 데 사용되는 경우
ModelForm
모델 설명이 중복되지 않도록 a 를 사용할 수 있습니다 .
다음으로 생성 된 모델 양식의 예 forms.Modelform
:
from django.forms import ModelForm
from . import models
# Create the form class.
class ArticleForm(ModelForm):
class Meta:
model = models.Article
이 양식에는 Article
생성 된 모델 과 동일한 필드 유형이 모두 자동으로 포함됩니다 .
유사점은 둘 다 위젯을 사용하여 양식 입력 세트를 생성하고 둘 다 브라우저에서 보낸 데이터의 유효성을 검사한다는 것입니다. 차이점은 ModelForm이 지정된 모델 클래스에서 필드 정의를 가져오고 기본 모델을 데이터베이스에 저장하는 방법도 있다는 것입니다.
내장 UserCreationForm myapp / forms.py를 확장하는 방법은 다음과 같습니다 .
from django import forms
from django.contrib.auth.forms import UserCreationForm
class RegisterForm(UserCreationForm):
first_name = forms.CharField(max_length=30)
last_name = forms.CharField(max_length=30)
email = forms.CharField(max_length=75)
class Meta(UserCreationForm.Meta):
fields = ('username','first_name','last_name', 'email')
참고 URL : https://stackoverflow.com/questions/2303268/djangos-forms-form-vs-forms-modelform
'Development Tip' 카테고리의 다른 글
이상한 그라데이션 테두리 효과 (0) | 2020.11.01 |
---|---|
"이 설치에서는 프로젝트 유형이 지원되지 않습니다."오류 (0) | 2020.11.01 |
asp.net 경로에서 물결표 (~) 사용 (0) | 2020.11.01 |
ImportError : mock이라는 모듈이 없습니다. (0) | 2020.11.01 |
HttpClient 요청에서 IOException 발생 (0) | 2020.11.01 |