티스토리 뷰
스프링부트의 MVC 패턴이다.
디장고의 MTV 패턴이다.
스프링 - 디장고 순으로
Controller = View
Model = Model
View = Template
이다.
작업했던 디장고 폴더구조를 다시 보자.
백엔드 폴더 내부에 메인 폴더가 있고 같은 위치에 accounts와 movies 폴더가 있다.
메인 폴더 안에는 세팅과 기본 url 이 있다.
accounts 폴더 안에는 models.py + serializers.py + urls.py + views.py 로 구성되어 있다.
HTTP 응답을 생각해보자.
특정 주소로 요청이 오면 디장고의 view 에서 처리한다.
@api_view 어노테이션을 보자. 포스트 요청을 처리한다.
signup 함수를 만들고, request를 파라미터로 받았다.
password 는 어떻게 얻는가? request.data.get('password') 이다. 이게뭐지? 모르겠다. 무지성이 이렇게나 위험하다.
이것은 데이터를 수동을 반환하는 경우다.
request 에 데이터가 담겨 있을 때는 어떻게 하나?
request.data 에 데이터가 담겨있다고 장고 공식에 써있다.
에러 코드도 이곳에서 함께 반환한다.
무지성으로 쓰지 말고, 공식 문서를 잘 봐야 하는 이유를 알 것 같다.
이해 없이 써왔다...이러지 말자..
먼저 특정 클래스가 있었을 것이다. User 클래스겠지.
이걸 분명히 인스턴스화 하는 부분이 있을거다.
그리고 이 인스턴스를 해당 클래스용 시리얼라이저에 파라미터로 넣어서
인스턴스를 직렬화한 { 필드 : 값, 필드2 : 값2, ... } 것이다.
그러면 지금까지 사용한 .save(), .is_valid() 같은 메서드는 대체 뭔가.
이것은 시리얼라이저의 메서드로 사용하면 해당 인스턴스의 정보를 저장하고, 업데이트하고 유효성을 검증하는 것이다.
save는 인스턴스가 존재하면 update 하고 존재하지 않으면 create 한다.
자 다시 보자.
일단 클래스가 있고, 해당 클래스의 인스턴스를 생성하는 부분이 있다. 분명히!!
저 get_list_or_404 를 봐야된다. 저기에 파라미터로 Article 클래스를 넣었다.
함수를 실행하고, 파라미터로 클래스를 넣었다고!!!!
그걸로 쿼리셋을 만들고 인스턴스가 맞으면 리스트로 만들고 아니면 에러를 raise한다.
최종적으로 리스트가 없으면 404 에러를 반환하고 있으면 리스트를 반환한다.
인스턴스 리스트 맞다!!!
그리고 그 인스턴스를 시리얼라이저에 넣어 직렬변환 해준 것이다.
그리고 시리얼라이저의 메서드를 통해 데이터베이스에 연동이 되는 것이다.
자기가 뭘 쓰는지도 모르고 작업을 하면 나처럼 된다....
이제 이러지 말자..
'Django Framework' 카테고리의 다른 글
Django ORM 은 어떻게 동작하는가 (무지성 주의) (0) | 2022.01.20 |
---|---|
Django Serializer 좀 더 이해해보기 (0) | 2022.01.20 |
JWT TOKEN DECODE ERROR (0) | 2021.12.24 |
[미해결] Django Seed 활용하여 MTM 포함한 모델의 test data 생성하기 (0) | 2021.12.24 |
Django Seed 활용하여 FK 포함한 모델의 test data 생성하기 (0) | 2021.12.24 |
- Total
- Today
- Yesterday
- 코딩도서
- 맥과윈도우로깃허브
- ssafy6기
- 개발언어순위
- ssafy결과
- 클린코드
- 폰트추천
- 개발자
- 개발자로드맵
- 디즈니얼굴
- 개발자커리
- 개발언어추천
- SSAFY
- 싸피
- 임대차3법
- 상업용무료폰트
- 깃허브계정2개
- ssafy합격후기
- 싸피6기
- 폰트
- ssafy후기
- 깃허브계정
- 무료폰트추천
- 한글무료폰트추천
- intj여자
- 개발자책추천
- 클린코더
- 개발자도서추천
- 브왈라
- 개발도서추천
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |