728x90
여기까지 요약
djago model
- DB
- ORM
- Migrations
- DB API
- QuerySet API
- CRUD
핵심 명령어- makemigrations, migrate
django form in webex
- Form
- ModelForm
Form (유효성 검사)
form은 장고프로젝트의 주요 유효성 검사 도구중 하나
공격 및 우연한 데이터 손상에 대한 중요한 방어수단
django는 폼에 관련된 작업의 아래 세부분을 처리해 줌
- 렌더링을 위한 데이터 준비 및 재구성
- 데이터에 대한 HTML forms 생성
- 클라이언트로부터 받은 데이터 수신 및 처리
Form Class (모델을 하는 것과 비슷한 원리 - forms 안의 녀석을 불러온다..)
- django Form 관리 시스템의 핵심
- form 내 field, field 배치, 디스플레이 widget, label, 초기값, 유효하지 않는 filed에 관련된 에러메세지를 결정
- django는 사용자의 데이터를 받을 때 해야 할 과중 작업(유효성 검증, 입력되니 데이터 검증결과 재출력 등) 과 반복 코드를 줄여줌
forms.py 안에
from django import forms
class Articleform(forms.Form):
title = forms.CharField(max_length = 10)
content = forms.CharField(widget=forms.Textarea)
모델에있는 캐릭터 필드와 다르다.
Outputting forms as HTML
- as_p() : 각 필드가 단락으로 렌더링
- as_ul() : 각 필드가 목록항목(list item)으로 렌더링
- as_table() : 각 필드가 테이블 형태로 렌더링
Django 의 2가지 HTML input 요소 표현 방법
Form fileds
- input에 대한 유효성 검사 로직을 처리하며 템플릿에서 직접 사용됨
Widgets
- 웹 페이지의 HTML input 요소 렌더링 및 제출(submitted) 된 원시 데이터 추출을 처리
- 하지만 widgets은 반드시 form fields에 할당 됨 (독자적 사용 불가)
ModelForm Class 작성
class ArticleForm(forms.ModelForm)
class Meta: <<<<<<<<<<<<< 메타클래스가 생김 모델 클래스에대한 정보를 등록한다.
model = Article <<<<<<<<<<<< Article() 조심 괄호 없이합니다
fields = '__all__'
Form & ModelForm
폼과 모델폼은 장단점이있다. 사용하는 곳이 약간식 다름
역할이 다르다
가장 큰 차이
- 어떤 레코드를 만들어야 할 지 알고 있으므로 바로 .save() 호출 가능
- 원래라면 title, content 를 적어 검증하고 저장하여야한다. 하지만 modelform 은 이미 알고있기때문이다.
728x90
'SSAFY > Django' 카테고리의 다른 글
[DJANGO] STATIC FILES (0) | 2021.03.19 |
---|---|
Static 정적파일 & Media 파일 추가하기 (0) | 2021.03.18 |
가상환경 만들기부터 게시판 Form 을 사용하여 만들기 (0) | 2021.03.16 |
Django 가상 환경 만들기 // 협업 (0) | 2021.03.13 |
Django 관통 Prj (0) | 2021.03.13 |