Django

[Django] #5 요청과 응답

kinggoddino 2024. 8. 12.

웹 브라우저의 역할.

인터넷에서 내가 원하는 페이지를 찾아서 보여줌, 

하이퍼링크를 통해 다른 페이지로 이동할 수 있도록 도와줌.

HTML 텍스트 파일을 우리가 보는 예쁜 화면으로 바꿔주는 프로그램. == 렌더링(Rendering) 한다고 함.

 

※ 렌더링 개념 공부하기

 

웹 페이지란?

Web Page 는 우리가 보는 화면 하나하가 웹 페이지임.

 

 

정적 웹페이지 vs 동적 웹페이지

 

Static Web Page

- 작성한 상태를 그대로 제공하는 웹 페이지

- 모든 상황에서 동일한 내용을 전달함.

- 우리가 작성한 HTML은 정적 웹페이지임

 

Dynamic Web Page

- 요청에 따라 보여주는 모습이 수정되어 달라지는 웹 페이지

(내가 로그인 한 화면이랑 다른사람이 로그인한 화면이랑 다른것.)

- 그럼 누군가가 그걸 바꿔줘야겠지?

요청을 받아서 '적절한 응답'을 만들어주는 주체 : Django

장고가 그 요청을 처리해서 적절한 대답을 해줌

 

 

백엔드

- 보이지 않는 서버 측의 작업을 담당

- 데이터베이스와의 상호작용, 비즈니스 로직 처리, 보안 처리, 사용자 인증 등을 처리.

(즉, 클라이언트가 요청하면 그에 맞는 처리를 하고 결과를 만들어서 돌려주는 것.)

- 주로 서버 사이드 언어 및 프레임워크 (장고) 를 사용함. 데이터 베이스와의 통신을 담당.

- 주요 목표는 안정성, 보안성, 성능을 유지하며 프론트엔드와의 원활한 데이터 교환을 지원함.

 

프론트엔드

- 디자이너가 만든 웹 페이지를 기반으로 '동적'이고 상호작용적인 웹 애플리케이션 개발.

- 주로 JavaScript 프레임워크 (리액트, js 등) 나 라이브러리를 사용해 프론트엔드 기능을 개발

- 서버의 데이터을 받아서 화면에 어떻게 데이터를 예쁘게 보여줄 지 '상태(state)관리' 담당. 어떻게 해야 데이터를 효율적으로 관리할 수 있을까?

- 주로 웹 애플리케이션의 비즈니스 로직을 처리하고 상호작용적인 요소를 다룸.

- UI 컴포넌트의 상태관리와 라우팅 등을 수행(웹의 화면이 핸드폰 어플에서는 줄어들면서 예쁘게 보이는거. )

- 프론트 개발자는 더 복잡하고 동적인 웹 애플리케이션을 만들기 위해 '퍼블리셔'랑 협업하고 웹 애플리케이션의 전체적인 아키텍처와 성능을 고려

 

원래

1. 디자이너 : 이쁘게 만들어줌

2. 퍼블리셔 : 그걸 HTML / CSS 로 바꿔줌

3. 프론트엔드개발자 : 그걸 받아서 동적인 요소를 만들어줌

 

근데 요즘에는

1+2 or 2+3 으로 그냥 역할이 합쳐져서 '퍼블리셔'라는게 없어졌음.

 

클라이언트가 서버에게 요청,

서바가 요청을 받아서 처리 후

클라이언트에게 적절한 응답.

 

요청(Request) :

데이터를 JSON이나 HTML 폼 데이터와 같은 형식으로 전달함.

클라가 서버에게 요청을 할때 데이터를 보낼수도 있고 안보낼수도 있는데

데이터를 보낼 때 어떠한 형식을 갖추고 보냄. 

그 중 가장 많이 쓰이는 게 'JSON'이라는 형식임.

 

응답(Response) : 

HTML, JSON, XML 등의 형식으로 전달함.

클라가 req를 보내면 서버는 처리를 한 후 response를 준다.

이 응답은 HTML일수도 있음 -> .html파일이면 받아서 그냥 슉 보여주면 됨.

근데 .html 파일이 아니라 그냥 data만 줄 수도 있음. -> 그걸 받아서 처리해서 보여주면 됨.

 

 

python manage.py runserver

 

 http://127.0.0.1:8000/

주소가 나옴.

 

이 주소를 누르면, 우리 서버로 '접속'할 수 있음.

 

== 우리는 전 세계 어딘가에 있는 '내서버'를 '내컴퓨터'에서 실행하고 있는것임.

이 요청을 할 수 있는 주소가 바로 저거임. 

 

저 주소를 복사해서 그냥 웹주소창에 입력하고 엔터를 치는 행위

== GET /

== 너 /(슬래시) 라고 하는 아무것도 없는 주소로 요청을 보냈어. 라는 의미.

그 후 우리 눈에는 안보이지만 응답을 줘서 그걸 해석해서 화면을 보여준거임.

 

장고로 서버를 띄우고, 우리가 띄운 서버로 클라이언트를 이용해서 요청을 보낸 후, 응답을 받은 것이다.

 

 

'Django' 카테고리의 다른 글

[Django] #7 장고 Template 시작하기  (0) 2024.08.13
[Django] #6 장고 설계 철학 MTV pattern  (0) 2024.08.13
[Django] #4 클라이언트와 서버  (0) 2024.08.12
[Django] #3 장고 앱  (0) 2024.08.12
[Django] #2 장고 프로젝트  (0) 2024.08.12