SSAFY/Django

현재까지 Django 요약

황성안 2021. 3. 17. 14:00
728x90

여기까지 요약

djago model

  • DB
  • ORM
  • Migrations
  • DB API
  • QuerySet API
  • CRUD
핵심 명령어- makemigrations, migrate

 

django form in webex

  • Form
  • ModelForm

 

Form (유효성 검사)

  • form은 장고프로젝트의 주요 유효성 검사 도구중 하나

    공격 및 우연한 데이터 손상에 대한 중요한 방어수단

  • django는 폼에 관련된 작업의 아래 세부분을 처리해 줌

    1. 렌더링을 위한 데이터 준비 및 재구성
    2. 데이터에 대한 HTML forms 생성
    3. 클라이언트로부터 받은 데이터 수신 및 처리

 

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 요소 표현 방법

  1. Form fileds

    • input에 대한 유효성 검사 로직을 처리하며 템플릿에서 직접 사용됨
  2. 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