웹 브라우저의 역할.
인터넷에서 내가 원하는 페이지를 찾아서 보여줌,
하이퍼링크를 통해 다른 페이지로 이동할 수 있도록 도와줌.
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 |