Django

[Django] 장고 + 리액트 2 (+ Forward, Redirect, request, session, application)

JustdoJustin 2022. 11. 13. 22:58

프로젝트 내부에 있는 패키지 형태의 디렉토리명은 내부에 있는 모듈들이 참조하고 있기 때문에, 함부로 바꾸면 안된다. 

manage.py : 여러 장고 명령을 실행해주는 진입점이다.

__init__.py : 패키지를 임포트할 때 임포트의 대상이다.

settings : 현재 프로젝트의 기본 장고설정을 덮어썼으며, 새롭게 추가로 설정하는 것을 적어주면 됨

urls.py : 최상위 URL 설정 모듈

wsgi(+asgi).py : 실제 서비스에서의 웹서비스 진입점

 


장고의 주요 기능들

Function Based Views : 함수로 HTTP 요청 처리

Models : 데이터베이스와의 인터페이스 (ORM 기능의 영역)

Templates : HTML 문자열 조합 목적으로 사용하며, 푸쉬 메시지나 이메일 내용을 만들 때에도 쓰면 편리 

Admin : 심플한 DB 레코드 관리 UI (간단한 관리자용)

Logging : 다양한 경로로 메세지 로깅

Stitic : 개발 목적으로의 정적인 파일 관리

Messages framework : 유저에게 1회성 메세지 노출 목적(알림창, 경고창)

 

Class Based Views : 클래스로 함수 기반 뷰 만들기

Forms : 입력 폼 만들기, 입력값 유효성 검사 및 DB에 저장

테스팅 / 국제화 & 지역화 / 캐싱 -> 표준화된 인터페이스로 지원해줌

Geographic / Sending Emails / Syndication Feeds / Sitemaps

 

웹 앱 연결구조

웹 브라우저 - 웹 서버(장고) - DB 서버

                                           - 캐시 서버

장고에서는 URLconf / View / Model / Templates 기능을 한번에 지원해주는 것이다.

 

 


포워딩(RequestDispatcher)

웹브라우저에서 요청이 오면 서버 -> 서버로 요청하여 응답하게 한다.

서버에서 서버로 웹 컨테이너에 의해 다른 주소로 포워딩한다. 이때 객체 정보도 같이 전달한다.

그리고 서버는 새 주소에서 반환한 결과값으로 응답한다.

 

- 속도가 리다이렉트보다 더 빠르다

- 서버에서 서버로 페이지 요청을 하기 때문에, String 뿐만 아니라 객체도 전달할 수 있다.

- 문제는 응답 후에도 처음 클라이언트가 요청한 URL로 지정되어 있기 때문에, 새로고침을 하면 같은 정보가 여러 번 저장되는 경우이다.

 

리다이렉트(sendRedirect)

웹브라우저에서 요청이 오면 서버 -> 웹브라우저로 요청을 보내고 다시 웹브라우저 -> 서버 로 요청했을 때 서버가 응답하게 된다.

 

- 따라서 포워딩의 문제를 해결하기 위해서, 리다이렉트를 사용하면 된다.

- 클라이언트에서 요청이 들어오면 서버가 다른 주소로 요청하라고 응답한다.

- 그러면 클라이언트는 다시 새로운 URL에 재요청한다.

- 이때 request 와 response 객체가 새롭게 생성된다.

- 시스템의 변화가 생길 때(생성, 수정, 삭제 등) 재요청을 방지해준다.

- 리다이렉트는 GET방식으로 값을 전달해야 한다. 요청객체가 새로 생기기 때문에 값을 보내려면 URL도 같이 보내야하기 때문이다.

request

클라이언트에게 응답하기 전까지만 유효한다. 즉, 저장된 데이터는 응답을 보내기 전까지만 유효하고, 응답하면 제거된다.

- Form 전송, key value 값, request.setAttribute()

 

session

웹 브라우저를 닫거나, 로그아웃을 하기 전까지 유효하다. 보통은 30분 정도 유지된다.

- session.setMaxInactiveInterval(60) 처럼 유효 기간을 초 단위로 설정할 수도 있다.

 

application

리부팅하기 전까지 유효하다. 여기에 저장된 값은 서버를 끄기 전까지 유지된다.

- 모든 클라이언트가 공통적으로 사용하는 데이터는 application에 담는다.

 

 

외부 참조 링크

https://cafe.daum.net/flowlife/HqLp/5

 

Daum 카페

 

cafe.daum.net