[TIL: 0316] Model과 ORM

ryun·2023년 3월 16일
0

TIL

목록 보기
31/34

Form & Data

데이터를 보내고 가져오기
HTML form element를 통해 사용자와 애플리케이션 간 상호작용 이해하기

클라이언트 & 서버 구조

웹은 기본적으로 클라이언트-서버 아키텍처 사용
클라이언트가 서버에 요청을 보내고, 서버는 클라이언트 요청에 응답

HTML form's attributes

  1. action
    입력 데이터가 전송될 URL을 지정
    데이터를 어디로 보낼 것인지 지정하는 것이며 이 값은 반드시 유효한 URL 이어야 함
    속성 지정 안하면 데이터는 현재 form 이 있는 페이지 URL로 보내짐

  2. method
    데이터를 어떻게 보낼 것인지 정의
    입력 데이터의 HTTP request methods를 지정
    오직 2가지 방법으로만 전송할 수 있는데 GET과 POST

HTML element

데이터를 입력 받기 위해 사용
"type"속성에 따라 동작 방식이 달라진다
핵심 속성

  • name
    • 네임 속성에 설정된 값을 서버로 전송하고 서버는 name 속성에 설정된 값을 통해 사용자가 입력한 값에 접근
      예) name = "nickname"
      nickname: 홀리

HTML request methods

  • HTTP
    HTML 문서와 같은 리소스 (데이터)들을 가져올 수 있도록 해주는 프로토콜
  • 웹에서 이루어지는 모든 데이터 교환의 기초
  • 리소스에 수행하길 원하는 행동을 나타냄
    • ex) GET, POST, PUT, DELETE

GET
서버로부터 데이터를 얻는데 사용(정보조회, 리소스 요청)

  • Query String Parameters를 통해 전송 (url)
    • articlesthrow/
      Query String Parameters
      사용자가 입력 데이터 전달하는 방법 중 하나
      url 주소에 데이터를 파라미터를 통해 넘기는 것
      &로 연결된 키 밸류으 쌍으로 구성, 기본 IRL과 물음표로 구분
      예) path?key=value & key=value

Django Model

모델의 핵심 개념과 ORM을 통한 데이터베이스 조작 이해

장고는 웹 애플리케시녀의 데이터를 구조화, 조작하기 위한 추상적인 계층

Data base

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

기본구조

  1. 스키마
    뼈대
    자료구조, 표현방법, 관계를 정의한 구조

  2. 테이블

Model 작성하기

데이터 베이스의 데이터를 어떻게 저장할지 정의하는 것

.models.py 작성

데이터베이스 스키마

작성한 models.py는 데이터베이스 스키마 정의한 것 > 이대로 만들어 주세요 해야함
실제 데이터베이스에 반영하기 위한 과정이 필요

Migration

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

<관련 주요 명령어>

  1. makemigrations
    모델의 변경사항에 대한 새로운 마이그레이션 만들 때 사용 (like 커밋)
    따로 지정하지 않아도 id라는 필드를 PK로 만들어준다

  2. migrate
    설계도를 실제 데이터베이스에 반영하는 과정
    모델 변경사항과 데이터베이스를 동기화

반드시 기억해야 할 3단계

  1. 모델에서 변경사항이 발생
  2. 마이그레이션 생성
  3. DB 반영 (모델과 DB의 동기화)

설계도는 누가 해석?
DB가 설계도를 이해하고 동기화를 이루는데 중간에서 번역을 담당하는게 ORM

ORM

Object-Relational-Mapping
내장 장고 ORM을 사용해서 SQL 사용하지 않고 데이터베이스 조작 할 수 있다

장점
SQL 몰라도 객체지향 언어로 DB 조작 가능
객체 지향적 접근으로 인한 높은 생산성

단점
모든 SQL이 하는걸 다 할 수는 없다
세밀한 조작 구현 어려움

QuerySet API

데이터베이스 구문

어떤 모델이
어디에 붙어있는 누구한테
무엇을 할 것인지
시키는 것이다

objects manager

장고 모델이 데이터베이스 쿼리 작업 가능하게 하는 인터페이스
장고는 기본적으로 모든 장고 모델 클래스에 대해 오브젝트라는 매니저 객체를 자동으로 추가함
이 매니저를 통해 특정 데이터 조작이 가능
DB를 파이썬 클래스로 조작할 수 있도록 여러 메서드를 제공하는 매니저

쿼리

데이터 베이스에 특정 데이터를 보여 달라는 요청

파이썬 =ORM=> SQL => 데이터베이스
응답 데이터 =ORM=> QuerySet

쿼리셋

데이터베이스에서 전달받은 객체 목록(데이터 모음)
필터 걸거나 정렬 수행 가능
단일한 객체 반환할 때는 쿼리셋이 아닌 모델(클래스)의 인스턴스로 반환됨

쿼리셋 API 활용해 데이터를 생성, 읽고, 수정, 삭제

0개의 댓글