Django Web Framework/Django Form for Web
ModelForm 기본형
class BoardForm(forms.ModelForm):
class Meta:
model = Board
# field = ['title', 'content',]
fields = '__all__'
widgets = {
'title': forms.TextInput(attrs={
'placeholder': "제목을 입력하세요!",
'class': 'title'
}),
'content': forms.Textarea(attrs={
'placeholder': '내용을 입력하세요!',
'class': 'content',
'rows': 5,
'cols': 50
}),
}
error_messages = {
'title': {
'required': '제목을 입력하지 않았습니다.'
},
'content': {
'required': '내용은 공란이 될 수 없습니다.'
},
}
meta에 기본적인 항목들을 설정하면된다.
모델폼 사용시 입력값 검증이 자동으로 처리가 되기 때문에
cleaned_data을 받아 모델 오브젝트를 생성할 필요 없이 바로 저장을 하면된다.
예시 :
if form.is_valid():
board = form.save() # form에는 검증된 데이터만 존재하므로 save()로 모델 객체를 받을 수 있다.
return redirect('boards:detail', board.pk)
일반폼과 모델폼은 업데이트 구현시 초기값을 주는 방법이 다르다
일반폼
form = BoardForm(initial=board.__dict__)
모델폼
form = BoardForm(instance=board)
모델폼은 post로 전달받은 데이터를 instance를 사용하여 해당 model로 받을 수 있다.
form = BoardForm(request.POST, instance=board)
request.POST인자 없이 instance에 수정할 model 객체만 전달하게 되면 modelform에 등록한 meta 정보를 이요해
값을 바인딩해준다.
form = BoardForm(instance=board)
'Django Web Framework > Django Form for Web' 카테고리의 다른 글
post로 받은 데이터를 form에 넣으면 어떻게 처리가 될까? (0) | 2021.07.02 |
---|
댓글