TIL_26 | [Django] Cruise 여행 말고 CRUD 여행!✈️

code_sign·2021년 1월 29일
0

django

목록 보기
2/4

크루즈(cruise) 여행 말고 우리 모두 크루드(CRUD) 여행 GO!!😎

CRUD 도대체 넌 뭔데? 🤔

자 승객여러분, 여행에 앞서 CRUD에 대해서 설명하겠습니다!

CRUDCreate, Retrieve, Update, Delete를 뜻하는 말로, django에서 ORM으로 조작하는 것들을 의미한다.

ORM??
ORM(Object Relational Mapping)이란 간단히 말하면 우리가 직접 SQL문으로 직접 DB를 다루지 않고도 Tool을 사용해서 다룰 수 있는 것이다.

즉, django에서의 python언어를 SQL문으로 번역시켜주는 번역기 역할을 한다고 생각하면 좋다!

C: Create

Create는 보통 Http method중에서 POST에서 작동한다.

request body에 담긴 정보를 가져와서 models.py에서 정의한 classattribute를 정의해서 DB data를 생성해준다.

  • class_이름.objects.create(파라미터1=값1, 파라미터2=값2, ...)

R: Retrieve

RetrieveHttp method중에서 GET에서 작동한다.
이미 저장된 데이터를 받아서 뿌려주는 역할을 한다.

Retrieve는 2가지의 데이터를 얻는 방법이 있는데,

  1. get: 첫번째 이미지처럼 한가지의 데이터만 가져온다. 2개 이상의 데이터가 나오면 오류와 함께 서버가 다운된다.
  2. filter: 두번째 이미지처럼 여러 데이터를 가져온다. query set 데이터 형식으로 넘어오기 때문에 데이터를 추출하기 위해서는 별도의 과정이 필요하다.

U: Update

update는 보통 POST에서 많이 작동하지만, create기능과 겹칠 수 있으니, 그때는 PATCHPUT을 이용해서 할 수도 있다.

update를 하기 위해선 get으로 변경할 객체를 먼저 가져오는 과정이 선행되어야 한다.

update에는 2가지의 방법이 있다.

1. save()
get으로 하나의 객체를 가져와서 직접 접근으로 수정 후 save() 이용.

mysql> select * from menu;
+----+--------+
| id | name   |
+----+--------+
|  1 | 음료   |
|  2 | asd    |
|  3 | 물품   |
+----+--------+
3 rows in set (0.00 sec)

2. update()
filterquery set으로 가져와서 모든 데이터를 수정하는 update() 이용.

mysql> select * from menu;
+----+-------------------------+
| id | name                    |
+----+-------------------------+
|  1 | 똑같이 변경되라!        |
|  2 | 똑같이 변경되라!        |
|  3 | 똑같이 변경되라!        |
+----+-------------------------+
3 rows in set (0.00 sec)

D: Delete

말그대로 데이터를 삭제하는 기능을 한다. http methodDELETE를 쓴다.

update와 같이 get/filter이후에 delete()로 데이터 삭제가 가능하다.

delete()Object이든 QuerySet이든 한번에 삭제된다.


오늘은 진짜 헷갈리고 어려운 CRUD를 정리해봤다!
나의 멘탈은 부서졌지만.. 이글을 읽는 모두가 괜찮았으면 좋겠다..!


(난 이미 늦었어.. 먼저가...)

Today, Learned

배운점

  • POSTupdate/create를 동시에 수행하는데, 그럴때 어떻게 구분하는지(PATCH, PUT)
  • GETlist Comprehension을 통해 반환해야 한다는 것!(모양은 객체지만, python 객체는 아니다!)
  • update를 하기위한 두가지 방법

느낀점

  • django의 문서를 파고 파다보니 프로 도굴꾼이 된 느낌..
  • 내일은 django 모델 메소드를 파려고 하는데... 너무 무섭다..

오늘의 한마디

M2M, url path parameter... 다음은 너네다!!!💣💣

profile
방탈출 좋아하는 코딩덕후

4개의 댓글

comment-user-thumbnail
2021년 1월 30일

잘 봤습니다 ^^

1개의 답글
comment-user-thumbnail
2021년 1월 31일

프로 불편러 등장 .. save랑 update의 코드박스안에 있는 mysql 테이블이 삐뚤하네여 .. 수정부탁드립니다.

1개의 답글