티스토리 뷰

 

 

스프링부트의 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 에 데이터가 담겨있다고 장고 공식에 써있다.

 

2 - Requests and responses - Django REST framework

From this point we're going to really start covering the core of REST framework. Let's introduce a couple of essential building blocks. REST framework introduces a Request object that extends the regular HttpRequest, and provides more flexible request pars

www.django-rest-framework.org

에러 코드도 이곳에서 함께 반환한다.

무지성으로 쓰지 말고, 공식 문서를 잘 봐야 하는 이유를 알 것 같다.

 

이해 없이 써왔다...이러지 말자..

먼저 특정 클래스가 있었을 것이다. User 클래스겠지.

이걸 분명히 인스턴스화 하는 부분이 있을거다.

 

그리고 이 인스턴스를 해당 클래스용 시리얼라이저에 파라미터로 넣어서

인스턴스를 직렬화한 { 필드 : 값, 필드2 : 값2, ... } 것이다.

 

그러면 지금까지 사용한 .save(), .is_valid() 같은 메서드는 대체 뭔가.

이것은 시리얼라이저의 메서드로 사용하면 해당 인스턴스의 정보를 저장하고, 업데이트하고 유효성을 검증하는 것이다.

save는 인스턴스가 존재하면 update 하고 존재하지 않으면 create 한다.

 

자 다시 보자.

일단 클래스가 있고, 해당 클래스의 인스턴스를 생성하는 부분이 있다. 분명히!!

저 get_list_or_404 를 봐야된다. 저기에 파라미터로 Article 클래스를 넣었다.

함수를 실행하고, 파라미터로 클래스를 넣었다고!!!!

그걸로 쿼리셋을 만들고 인스턴스가 맞으면 리스트로 만들고 아니면 에러를 raise한다.

최종적으로 리스트가 없으면 404 에러를 반환하고 있으면 리스트를 반환한다.

 

인스턴스 리스트 맞다!!!

그리고 그 인스턴스를 시리얼라이저에 넣어 직렬변환 해준 것이다.

그리고 시리얼라이저의 메서드를 통해 데이터베이스에 연동이 되는 것이다.

https://ssungkang.tistory.com/entry/Django-Serializer-%EB%A5%BC-%ED%86%B5%ED%95%9C-%EC%9C%A0%ED%9A%A8%EC%84%B1-%EA%B2%80%EC%82%AC-%EB%B0%8F-%EC%A0%80%EC%9E%A5

 

https://docs.djangoproject.com/en/4.0/topics/serialization/

 

 

 

자기가 뭘 쓰는지도 모르고 작업을 하면 나처럼 된다....

이제 이러지 말자..

 

댓글