본문 바로가기
카테고리 없음

[TIL]내일배움캠프 - Django(model.py)

by Byeong 2024. 4. 11.

 

Django의 패턴은 MTV 중에서  지금 까지 Templates와 Views를 했다. 

그래서 오늘은 Models에 관리하려고 한다.

 

Models는 주로 데이터 베이스를 담당하는 부분입니다.

데이터 베이스는 데이터가 잘 정리된 곳으로 스키마로 정리되어 있으며 쿼리 Query로 소통을 합니다.

 

데이터가 담겨 있는 것을 Table이라고 하며 속성값을 column이라고 하며 행 row는 데이터 레코드라고 한다.

 

Django의 model은 class로 상속받아서 사용하며 하나하나의 필드로 정의합니다.


 

Mifration 적용하기 

하지만 이렇게 생성된 것은 python으로 정의된 것이기 때문에 데이터 베이스에 적용하기 위한 Migrations을 적용해 줘야 합니다.

python manage.py makemigrations 생성

python manage.py magrate 동기화

 

마지막에 app name를 넣어서 각자 생성도 가능하다.

 


 

Django ORM

 

Object Relatonal Mapping 객체 관계형 맵핑 뭔가가 어려운데 쉽게 생각하면 데이터 베이스 랑 python이랑 SQL의 query를 이용한 방식을 쉽게 하기 위한 도구가 ORM이다 

python <=> ORM <=> DB

 

 

사용 방법은 간단하다.  object가 Django ORM을 queryset API라는 것 이용해 사용한다고 기억해 두자

ModelClass.objects.QuerysetAPI

 

이런 것으로 사용합니다.

처음에는 내가 Model에서 정의 한 class 다음은 object 그리고 Queryset API입니다

 


 

CRUD ( create, read, update, delete)

 

 

추가하기

 

몇 가지 방법이 있지만 나는 아래와 같은 방법이 가장 깔끔하고 좋다. 

my_django.objects.create(내용)

다른 방법은  save()를 해줘야 하지만 이 친구는 그럴 필요가 없이 바로 저장이다.

 

 

 

Read 모든 데이터 조회

Modelclass.objects.all()

 

마지막 부분에 all()을 사용해서 modelclass의 데이터를 다 Queryset으로 가져옵니다.

가져온다면 꼭 context= {ket : value }  딕셔너리 형대로 받아와야 합니다. 

 

한 가지 데이터 조회

Modelclass.objects.get()

 

꼭 한 가지의 데이터 조회에만 사용합니다.

 

 

조건으로 조회하기 

Modelclass.objects.filter(조건)

filter(조건)을 사용하여 조회하는 방식으로 조건에 Lookup이라는 django에서 제공하는 매개변수가 있습니다.

이것은 우리의 성경 https://docs.djangoproject.com/en/4.2/topics/db/queries/#field-lookups에서 찾아보시면 됩니다.

 

 

 

수정하기 

my_django = Modelclass.objects.get()
my_django.content = '집에가고 싶다'
my_django.save()

 

하나의 데이터를 불러와 하나하나 수정하고 저장하는 방식입니다. 

 

 

삭제

my_django = Modelclass.objects.get()
my_django.delete()

 

하나의 데이터를 불러와 삭제를 해주면 됩니다.

 

 

 


method POST, GET

 

지금까지는 GET 방식을 이용하여 받아 데이터를 받아왔다 하지만 웹서버에서 회원가입이나 중요한 데이터 수정을 하는데

쿼리스트링( Query String Prameters)으로 URL에 데이터가 포함되어 보내진 자면 보안에 참 많은 문제가 발생할 것이다.

 

그래서 GET은 주로 데이터를 조회할 때 사용하고 POST 방식은 데이터 베이스의 변화를 주는  등록, 수정, 삭제할 때 사용한다. 

 

POST의 서버에 데이터를 보내는 방식이 CSRF(Cross-Site-Request-Forgery) 암호화되어 안전하게 보내는 방식으로 CSRF token을 통해 안전하게 데이터를 보냅니다.

{% csrf_token %}

 


마무리

지금까지 배운 내용들은 기본 적인 내용이라 손이 익숙하게 만들기 위해 위의 내용들을 반복적으로 시도해 보는 것이 좋을 거 같다.