Programming Language/Django

Django 03) Form & Data

Sergemeow 2023. 4. 11. 14:02

Sending and Retrieving form Data

  • 데이터를 보내고 가져오기
  • HTML form element를 통해 사용자와 앱 간의 상호작용

HTML form’s attributes

  1. action
    • 입력데이터가 전송될 URL을 지정
    • 데이터를 어디로 보낼 것인지 지정하는 것이며 반드시 유효한 URL이어야함
    • 속성을 지정하지 않으면 데이터는 현제 form이 있는 페이지의 URL로 보내짐
  2. method
    • 데이터를 어떻게 보낼 것인지 정의
    • 입력 데이터의 HTTP request methods를 지정
    • HTML form 데이터는 오직 2가지 방법으로만 전송 할 수 있음. Get, Post

HTML input element

  • 사용자로부터 데이터를 입력받기 위해 사용
  • type 속성에 따라 동작방식이 달라짐
    • input 요소의 동작 방식은 type 특성에 따라 현격히 달라지므로 각각의 type은 별도로 MDN 문서에서 참고
    • type을 지정하지 않은 경우 기본값은 text
  • 핵심 속성: name

HTML input’s attribute

  • name
    • form을 통해 데이터를 제출했을 때 name 속성에 설정된 값을 서버로 전송하고, 서버는 name 속성에 설정된 값을 통해 사용자가 입력한 데이터 값에 접근 가능
    • 서버에 전달하는 파라미터(name은 key, value는 value)로 매핑하는 것
  • HTTP
    • 리소스들을 가져올 수 있도록해주는 프로토콜
    • 웹에서 이루어지는 모든 데이터 교환의 기초
    • HTTP는 주어진 리소스가 수행할 원하는 작업을 나타내는 request methods를 정의

HTTP request methods

  • 자원에 대한 행위(수행하고자 하는 동작)를 정의
  • 주어진 리소스에 수행하길 원하는 행동을 나타냄
  • HTTP Method 예시
    • get, post, put, delete

GET

  • 서버로부터 정보를 조회하는데 사용
    • 즉, 서버에서 리소스를 요청하기 위해 사용
  • 데이터를 가져올 때만 사용해야함
  • 데이터를 서버로 전송할 때 Query String Parameters를 통해 전송
    • 데이터는 URL에 포함되어 서버로 보내짐

Query String Parameters

  • 사용자가 입력 데이터를 전달하는 방법 중 하나로, URL 주소에 데이터를 파라미터를 통해 넘기는 것
  • 이러한 문자열은 앰퍼센트(&)로 연결된 key=value 쌍으로 구성되며 기본 URL과 물음표(?)로 구분됨
  • Query String이라고도 함
  • 정해진 주소 이후에 물음표를 쓰는 것으로 Query Stirng이 시작함을 알림
  • key=value로 필요한 파라미터의 값을 적음
    • =로 key와 value가 구분됨

Retrieving the data

  • 데이터 가져오기
  • 서버는 클라이언트로 받은 key-value쌍의 목록과 같은 데이터를 받게됨

Django Model

  • Model의 핵심 개념과 ORM을 통한 데이터베이스 조작 이해
  • Django는 웹 애플리케이션의 데이터를 구조화하고 조작하기 위한 추상적인 계층(모델)을 제공

DATABASE

  • 체계화된 데이터의 모임
  • 검색 및 구조화 같은 작업을 보다 쉽게 하기 위해 조직화된 데이터를 수집하는 저장 시스템

Table

  • 필드와 레코드를 사용해 조직된 데이터 요소들의 집합
  • 관계(relation)라고도 부름

Field

  • 속성 또는 컬럼(column)
  • 각 필드에는 고유한 데이터 형식이 지정됨

Record

  • 튜플 혹은 행(row)

Primary Key

  • 기본 키
  • 각 레코드의 절대 중복될 수 없는 고유한 값
  • 데이터 베이스 관리 및 관계설정 시 주요하게 활용 됨

Query

  • 데이터를 조회하기 위한 명령어
  • 조건에 맞는 데이터를 추출하는 명렁어

Model

  • Django는 model을 통해 데이터에 접근하고 조작
  • 사용하는 데이터들의 필수적인 필드들과 동작들을 포함
  • 저장된 데이터베이스의 구조(layout)
  • 일반적으로 각각의 모델은 하나의 데이터베이스 테이블에 매핑(mapping)
    • 모델 클래스 1개 == 데이터베이스 테이블 1개

Django Model Field

  • django는 모델 필드를 통해 테이블의 필드에 저장할 데이터 유형을 정의
  • datafield(), charfield(), integerfield() 등

모델 예시

Migrations

  • django가 모델에 생긴 변화(필드 추가, 수정 등)를 실제 DB에 반영하는 방법

주요 명령어

  1. makemigrations
  2. 모델의 변경사항에 대한 새로운 migration을 만들 때 사용
  3. migrate

  1. models.py에 변경사항이 있으면
  2. migration 생성(makemigrations)
  3. 모델과 DB의 동기화(migrate)

model은 파이썬으로 작성됨. SQL쿼리와의 번역을 담당하는 것이 ORM

ORM

  • object-relational-mapping
  • 객체 지향 프로그래밍 언어를 사용하여 호환되지 않는 유형의 시스템 간에 데이터를 변환하는 프로그래밍 기술

  • 장점
    • SQL을 알지 못해도 객체지향 언어로 DB 조작 가능
    • 객체지향적 접근으로 인한 높은 생산성
  • 단점
    • ORM만으로 세밀한 데이터베이스 조작을 구현하기 어려운 경우가 있음