SoShin_
소신
SoShin_
전체 방문자
오늘
어제
  • 분류 전체보기
    • Study
      • HTML | CSS
      • JavaScript
      • Django
      • Python
      • Flask
      • Git
      • Project
      • 이것저것
      • 코딩테스트
      • NestJS
    • Review
      • Book
      • Movie & Drama

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 장고 allauth
  • flask orm
  • FLASK
  • openpyxl
  • 문제풀이
  • Django
  • 장고 유저기능
  • 영화리뷰
  • SQLAlchemy
  • 영화추천
  • orm
  • 파이썬
  • Python
  • db
  • Django allauth
  • 플라스크
  • node.js
  • JavaScript
  • MongoDB
  • js
  • 장고 제네릭뷰
  • 위도경도
  • 자바스크립트
  • 코딩테스트
  • Django 유효성 검증
  • allauth
  • 장고
  • SQLite
  • KakaoAPI
  • 유저기능

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
SoShin_

소신

Study/Django

Django Model Form / 장고 모델 폼 / forms.ModelForm

2021. 12. 8. 23:00
반응형

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
    'Study/Django' 카테고리의 다른 글
    • Django Validator / 장고 유효성 검증 / 내장 Field 옵션
    • Django의 CSRF 방지 / CSRF / Cross-Site Request Forgery
    • Django traling slash / 장고 트레일링 슬래시
    • Django model DateTimeField 한국 시간으로 설정하기
    SoShin_
    SoShin_
    직접 쓰는 개발 블로그

    티스토리툴바