Django_CRUD2

강현구·2021년 12월 18일
0

Django

목록 보기
4/12

Json

JSON : JavaScript Object Notation
프론트와 백이 통신할 때 데이터를 주고받는 대표적인 형식이다.
파이썬에서 바로 사용하지는 못하고 Json built in 모듈을 import하여 사용한다.
파이썬의 dictionary와 동일한 형태를 갖는다. (Key = Value)

View

View에서는 class를 통해 각각의 기본 단위를 구성한다.
class의 이름은 보통 어떤 자원을 사용할 것인지에 대한 명시를 해준다.
(DB의 어떤 데이터를 사용하는지, ex) ProductView : 제품에 관련된 액션을 할것이다.)

class 내에서 만드는 각각의 메소드는 http 메소드와 매칭된다. (GET, POST ...)

request문은 request라는 변수에 그대로 저장된다.
여기에는 우리는 작업할 내용을 body에서 가져온다.
데이터가 오는 타입은 Json이 아닌 다른 형태로 올 수도 있으니 이 부분은 프론트와 엔드포인트의 통신 방식을 협의해야한다.

쉘에서 수동으로 입력했던 내용을 View에서는 코드로 자동화할 수 있다.
서버를 설계하면서 들어가는 데이터의 키 값은 프론트와 협의하면서 맞춰야한다.

입력되는 데이터 중, P.K.의 경우에는 그에 대응되는 객체값을 할당해 주거나 또는 _id를 붙여 id값을 할당해줘도 된다.
> table상의 column이름을 직접 써서 대응하는 값을 입력하는 것이다.

return JsonResponse(보낼 데이터, 응답코드)
응답에 따로 보낼 데이터가 없다면 별다른 데이터 없이 메시지만 보내도된다.
엔드 포인트에 따라 다를 수 있다.
응탑코드는 "status = 200"과 같은 형태로 써주며, 상황에 맞게 입력해주면된다.

GET method

클래스 내에서 get 메서드를 생성해준다.
all이나 filter로 read하면 QuerySet으로 불러오는데 이 QuerySet은 iterable한 객체이기 때문에 for문을 쓸 수 있다.
for문을 통해서 각각의 인스턴스를 key에 매칭시켜 dictionary 형태로 result에 할당한다.

값을 호출할 때, 참조하는 테이블을 통해서 가져오게 되는데,
table의 정규화를 지나치게 많이 하게되면, GET메서드에서 값들을 계속해서 참조하여 가져와야 하기때문에 서버에 더 부하가 간다.
무조건 정규화를 많이 하는게 답은 아닐 수 있다.
서버의 자원과 코스트에 따라 정규화의 수준이 달라지게 된다.

QuerySet의 특성 lazyloading??
filter나 all과 같은 메서드의 경우에는 할당 시에는 이름만 적힌 상태로 DB와 통신하지 않다가, 호출 될때야 비로소 실행되어 DB와 통신하고 데이터를 받게된다.
즉, 할당 시에는 실행되지 않고 대기하고 있는 상태가 된다.

URLconf

지금까지 만든 View가 실행되게 하기 위해서는 서버로 들어오는 요청을 이에 맞게 연결해주어야 한다.
서버로 들어온 요청은 URLconf를 통해 분석, 분류되어 필요한 app의 필요한 view로 보내지게 된다.
URLconf는 settings.py가 있는 최초 생성 폴더의 urls.py에서 시작하며, include 메서드를 통해서 다른 앱에 있는 URLconf로 보내준다.
settings.py에 있는 URLconf로도 전부 처리할 수 있으나, 기능의 분리와 체계화를 통해서 관리측면의 효율성을 갖게된다.

세팅에서 Debug = True로 설정되면 오류발생 시 서버창에서 오류문구를 전부 띄워준다.
장고의 디버깅 코드는 따로 저장할 수도 있지만, 이 역시 세팅에서 별도로 설정해야 한다.

참고
magnoliarfsit.log
TIL29 | Django C.R.U.D : Wrap up 정리

profile
한걸음씩

0개의 댓글