반응형
Django Model Form
Django의 ModelForm은 Django의 강력한 폼 기능 중 하나로
사용자가 작성한 모델을 기반으로 자동으로 폼을 생성해주는 기능입니다!
일일이 폼을 작성하는 것을 원래는 아래의 코드처럼 django Form 클래스를 이용해서
간편하게 처리했지만 ModelForm을 사용하면 더 쉽게 사용할 수 있습니다!
def page_create(request):
if request.method == 'POST':
title = request.POST['title']
content = request.POST['content']
dt_created = request.POST['dt_created']
feeling = request.POST['feeling']
score = request.POST['score']
new_page = Page(
title=title,
content=content,
dt_created=dt_created,
feeling=feeling,
score=score
)
new_page.save()
return redirect('page-detail', page_id=new_page.id)
Django ModelForm을 사용하기 전 코드
ModelForm 사용법
ModelForm은 django Form 의 사용법과 다르게 forms.Form 대신 forms.ModelForm을 사용합니다.
이때 fields 에 fields = '__all__' 로 표현을 하면 모든 필드를 입력받겠다 하는 것입니다.
class 폼이름(forms.ModelForm):
class Meta:
model = 모델명
fields= ['필드명', '필드명'...]
위 코드처럼 작성하고 views.py를 수정해줍니다!
def 함수명(request):
if request.method == 'POST':
변수 = (forms.py에 적은 함수)(request.POST)
new_변수 = 변수.save()
return redirect('동적 URL')
사용 예시
def page_create(request):
if request.method == 'POST':
page_form = PageForm(request.POST)
new_page = page_form.save()
return redirect('page-detail', page_id=new_page.id)
else:
form = PageForm()
return render(request, 'diary/page_create.html', {'form': form})
view 함수
from django import forms
from .models import Page
class PageForm(forms.ModelForm):
class Meta:
model = Page
fields = '__all__'
forms 구현
반응형
'Study > Django' 카테고리의 다른 글
Django Validator / 장고 유효성 검증 / validator 추가하기 (0) | 2021.12.10 |
---|---|
Django Validator / 장고 유효성 검증 / 내장 Field 옵션 (0) | 2021.12.10 |
Django의 CSRF 방지 / CSRF / Cross-Site Request Forgery (0) | 2021.12.09 |
Django traling slash / 장고 트레일링 슬래시 (0) | 2021.12.09 |
Django model DateTimeField 한국 시간으로 설정하기 (0) | 2021.12.07 |