데이터를 보내고 가져오기
HTML form element를 통해 사용자와 애플리케이션 간 상호작용 이해하기
웹은 기본적으로 클라이언트-서버 아키텍처 사용
클라이언트가 서버에 요청을 보내고, 서버는 클라이언트 요청에 응답
action
입력 데이터가 전송될 URL을 지정
데이터를 어디로 보낼 것인지 지정하는 것이며 이 값은 반드시 유효한 URL 이어야 함
속성 지정 안하면 데이터는 현재 form 이 있는 페이지 URL로 보내짐
method
데이터를 어떻게 보낼 것인지 정의
입력 데이터의 HTTP request methods를 지정
오직 2가지 방법으로만 전송할 수 있는데 GET과 POST
데이터를 입력 받기 위해 사용
"type"속성에 따라 동작 방식이 달라진다
핵심 속성
GET
서버로부터 데이터를 얻는데 사용(정보조회, 리소스 요청)
articlesthrow/
모델의 핵심 개념과 ORM을 통한 데이터베이스 조작 이해
장고는 웹 애플리케시녀의 데이터를 구조화, 조작하기 위한 추상적인 계층
스키마
뼈대
자료구조, 표현방법, 관계를 정의한 구조
테이블
데이터 베이스의 데이터를 어떻게 저장할지 정의하는 것
.models.py 작성
작성한 models.py는 데이터베이스 스키마 정의한 것 > 이대로 만들어 주세요 해야함
실제 데이터베이스에 반영하기 위한 과정이 필요
장고가 모델에 생긴 변화(필드 추가, 수정 등)를 실제 DB에 반영하는 방법
<관련 주요 명령어>
makemigrations
모델의 변경사항에 대한 새로운 마이그레이션 만들 때 사용 (like 커밋)
따로 지정하지 않아도 id라는 필드를 PK로 만들어준다
migrate
설계도를 실제 데이터베이스에 반영하는 과정
모델 변경사항과 데이터베이스를 동기화
반드시 기억해야 할 3단계
- 모델에서 변경사항이 발생
- 마이그레이션 생성
- DB 반영 (모델과 DB의 동기화)
설계도는 누가 해석?
DB가 설계도를 이해하고 동기화를 이루는데 중간에서 번역을 담당하는게 ORM
Object-Relational-Mapping
내장 장고 ORM을 사용해서 SQL 사용하지 않고 데이터베이스 조작 할 수 있다
장점
SQL 몰라도 객체지향 언어로 DB 조작 가능
객체 지향적 접근으로 인한 높은 생산성
단점
모든 SQL이 하는걸 다 할 수는 없다
세밀한 조작 구현 어려움
어떤 모델이
어디에 붙어있는 누구한테
무엇을 할 것인지
시키는 것이다
장고 모델이 데이터베이스 쿼리 작업 가능하게 하는 인터페이스
장고는 기본적으로 모든 장고 모델 클래스에 대해 오브젝트라는 매니저 객체를 자동으로 추가함
이 매니저를 통해 특정 데이터 조작이 가능
DB를 파이썬 클래스로 조작할 수 있도록 여러 메서드를 제공하는 매니저
데이터 베이스에 특정 데이터를 보여 달라는 요청
파이썬 =ORM=> SQL => 데이터베이스
응답 데이터 =ORM=> QuerySet
데이터베이스에서 전달받은 객체 목록(데이터 모음)
필터 걸거나 정렬 수행 가능
단일한 객체 반환할 때는 쿼리셋이 아닌 모델(클래스)의 인스턴스로 반환됨
쿼리셋 API 활용해 데이터를 생성, 읽고, 수정, 삭제