사용자 입력 데이터를 수집하고, 처리 및 유효성 검사를 수행하기 위한 도구
-> 유효성 검사를 단순화하고 자동화할 수 있는 기능을 제공
![]() |
|---|
| form class랑 model class가 비슷하지만 form class에는 textfield()없음 |
![]() |
|---|
| {{form}} 이렇게 하면 Title과 Content가 존재하는 form 이 불러와짐 |
![]() |
| label, input 쌍을 특정 HTML 태그로 감싸는 옵션 |
|---|
![]() |
| content 영역이 아래로 내려가게 됨(각 요소를 p태그로 감싸는 효과) |
![]() |




데이터가 유효하지 않은 이유와 에러메시지가 출력되는 과정
- 별도로 명시하지 않았지만 모델 필드에는 기본적으로 빈 값은 허용하지 않는 제약조건이 설정되어 있음(무결성 조건)
- 빈 값은 is_valid()에 의해 False로 평가되고 form 객체에는 그에 맞는
에러 메시지가 포함되어다음 코드로 진행됨- django validator



| save() 메서드가 생성과 수정을 구분하는 방법 |
|---|
![]() |
| 키워드 인자 instance 여부를 통해 생성할 지, 수정할 지를 결정함. |
Django Form 정리
"사용자로부터 데이터를 수집하고 처리하기 위한 강력하고 유연한 도구"
HTML form 의 생성, 데이터 유효성 검사 및 처리를 쉽게 할 수 있도록 도움
| Widget 응용 |
|---|
![]() |
- 공통점은 ?
- '데이터 생성을 구현하기 위함'
- 게시글을 생성을 구현한다는 목적이 같다.- 차이점은 ?
- new는조회만 함. 템플릿만 렌더링한다.GET메서드만(GET에 대한 요청만) 받아서 처리
- create는생성을 함.DB와 연동되며 페이지를 주지 않음.POST 메서드(POST에 대한 요청만) 받아서 처리
| new와 create view 함수의 공통점과 차이점을 기반으로 하나의 함수로 결합 |
|---|
![]() |
| 두 함수의 유일한 차이점이었던 request method에 따른 분기 나누기 |
| POST 일때는 과거 create 함수 구조였던 객체 생성 및 저장 로직 처리 |
| POST가 아닐 때는 과거의 단순한 form 인스턴스 생성 |
(GET) -> 게시글 생성 문서를 줘!
(POST) -> 게시글을 생성해줘!
| 기존 edit와 update view 함수 결합 |
|---|
![]() |