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
- action
- 입력데이터가 전송될 URL을 지정
- 데이터를 어디로 보낼 것인지 지정하는 것이며 반드시 유효한 URL이어야함
- 속성을 지정하지 않으면 데이터는 현제 form이 있는 페이지의 URL로 보내짐
- 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과 물음표(?)로 구분됨
- 예시
- http://host:port/path?key=value&key=value
- 예시
- 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에 반영하는 방법
주요 명령어
- makemigrations
- 모델의 변경사항에 대한 새로운 migration을 만들 때 사용
- migrate
- models.py에 변경사항이 있으면
- migration 생성(makemigrations)
- 모델과 DB의 동기화(migrate)
model은 파이썬으로 작성됨. SQL쿼리와의 번역을 담당하는 것이 ORM
ORM
- object-relational-mapping
- 객체 지향 프로그래밍 언어를 사용하여 호환되지 않는 유형의 시스템 간에 데이터를 변환하는 프로그래밍 기술
- 장점
- SQL을 알지 못해도 객체지향 언어로 DB 조작 가능
- 객체지향적 접근으로 인한 높은 생산성
- 단점
- ORM만으로 세밀한 데이터베이스 조작을 구현하기 어려운 경우가 있음