Django(M.V.T) , CRUD(2)

이정민·2021년 5월 27일
0
post-thumbnail

Django M , V 와 CRUD

Visual Studio Code(django 과정)

1. Client에게 요청을 받게 되면 urls.py에서 어디로 무엇을 할지 정해준다.

(첫번째 사진의 코드)
처음 프로젝트를 시작할 때 생성된 dog[디렉토리] 안에 위치한 urls의 내부모습이다.


from django.urls import path, include

urlpatterns = [
	path('human_dog', include('human_dog.urls'))
]

위 코드의 의미는
http Get localhost:8000/human_dog/human이라는 요청이 오게 되면human_dog디렉토리 안에 있는 urls.py로 보내라는 뜻이다.(뒤쪽 /human은 밑에서 설명)

from django.urls import path
from .views import HumanView, DogView

urlpatterns = [
	path('/human', HumanView.as_view()),
    path('/dog', DogView.as_view())
]

(두번째 사진의 코드)

이후 app생성을 통하여 만들어진 human_dog[디렉토리]안에 새로 만들어준 urls.py에서http GET localhost:8000/human_dog 뒤에 오는 /human을 통하여 views.py안에 있는 HumanView(View)클래스로 이동시켜 GET함수를 실행하게 해준다.

2. Databases에 저장된 정보들을 models.py의 class를 통해서 가져와서 views.py에서 가공(json변환)을 해서 브라우저에 준다.

(첫번째 사진 = models.py , 두번째 사진 = mysql databases)

models.py안에 있는 클래스들은 아래 사진에 보이는 것처럼 테이블의 틀이 된다. 그 안에 각 속성들(ex/name,age등)이 있다. mysql DATAbases의 안에는 models.py의 객체들이 커리문으로 입력되어 저장되어 있고 이 정보들을 models.py에 있는 객체들을 이용해서 view.py메서드를 통해서 원하는 것을 브라우저에 잘 전달되게 해준다.

(views.py 사진)

현재 HumanView의 get메서드는 (주인이름,나이,이메일, 소유_강아지 이름, 강아지 나이)를 보내주는 역할을 한다.
Owner.objects.all()를 통해 database에 있는 Owner테이블에 있는 모든 정보(객체)들을 가져와서 for문을 통해 한개씩 뽑아낸다.

위에서(mysql databases사진)을 보면 Owner테이블을 Dog테이블이 가르키고있다.(ForeignKey를 통해 알 수 있다)
Owner에서 Dog에 대한 정보를 찾으려면 역참조를 통해서 찾아야한다.
for문을 통해 뽑아낸 i(Owner객체 한개).dog_set.all()을 통해 찾는다.
(역참조를 할 때는 class이름(소문자)_set을 이용)

이후 다음 for문을 통해 똑같은 과정을 거치고 JsonRsponse으로 묶어서 리턴시켜준다.

profile
안녕하세요.

0개의 댓글