[웹개발-Django] Form

Jinga·2023년 3월 21일
1
post-thumbnail
Document

django form이란

  • django의 유효성 검사 도구 중 하나로 외부의 악의적 공격 및 데이터 손상에 대한 중요한 방어 수단 역할을 한다.
  • 유효성 검사를 단순화하고 자동화 할 수 있는 기능을 제공한다.
  • 이를 통해 개발자가 직접 작성하는 코드보다 더 안전하고 빠르게 수행 하는 코드를 작성할 수 있게 해준다.
  • django의 form에 관련된 작업
    1. 렌더링을 위한 데이터 준비 및 재구성
    2. 데이터에 대한 HTML forms생성
    3. 클라이언트로부터 받은 데이터 수신 및 처리

Form class 사용하기

  • Model과 같이 상속을 통해 선언된다.(forms 라이브러리의 Form 클래스를 상속받는다.)
    1. 사용 할 app폴더 안에 forms.py 작성
    2. form1-1
    3. app 폴더 -> view -> form을 사용 할 create, update 수정 + 만든 form 상속
    4. form1-2 form1-3 form1-4

      as_p() # 각 필드가 p태그로 감싸져서 렌더링

ModelForm

  • Model을 통해 Form Class를 만들 수 있는 helper class.
  • ModelForm은 Form과 똑같은 방식으로 View함수에서 사용.
  • 즉 내가 만든 model을 바탕으로 form을 만들어 준다.
  • ModelForm 사용하기

    1. ModelForm 클래스 상속.
    2. ModelForm 클래스 안에 Meta 클래스 선언.
      • Meta 클래스는 ModelForm의 정보를 작성하는 곳이다.
      • ModelForm을 사용할 경우 참조 할 모델이 있어야 하는데, model 속성이 이를 구성한다.
    3. form1-5
    4. ModelForm사용할 함수 create수정
    5. form1-6
    6. 만약 필드마다 유효성 검사를 하고 싶다면
    7. form1-7
    8. create 함수 깔끔하게 정리하기
    9. ModelForm사용할 함수 update수정

Form과 ModelForm 차이

  • From
    • 사용자의 입력을 필요로 하며 직접 입력 데이터가 DB저장에 사용되지 않거나 일부 데이터만 사용 될때
    • 예시 : 로그인, 사용자의 데이터를 받아 인증과정에서만 사용 후 별도로 DB에 저장하지 않는다.
  • ModelForm
    • 사용자의 입력을 필요로 하며 입력을 받은 것을 그대로 Db 필드에 맞춰 저장 할 때

WIDGET

  • HTML input element의 렌더링/표현을 담당한다.
  • 단순히 input 요소의 보여지는 부분을 변경시킨다.
  • 반드시 form fields에 할당 된다.
  • 참고 django-widgets
  • widget
profile
다크모드가 보기 좋아요

0개의 댓글