본문 바로가기
Python/Django

Web - URL(2)

by hooni40 2021. 7. 6.
728x90
반응형

안녕하세요, 지난 시간에 url에 관련하여 정리하면서 Django를 이용하여 첫 페이지를 만들었습니다. 오늘 추가로 더 정리해보려 합니다. 그전에 지난 시간에 htttp://~~/foods/index라는 URL을 통해 웹페이지에 들어갔었는데요, 이 과정을 조금 더 자세히 살펴보면 1. URL을 치면 웹 클라이언트(저의 경우에는 Chrome입니다)에서 서버로 웹 페이지를 요청합니다. 그럼 2. 서버에서 웹페이지를 html 형식을 보내 줍니다. (참고로 서버는 웹페이지 말고 이미지나 동영상 등 여러 형태의 자원을 클라이언트에게 제공할 수 있습니다!) 여기서 URL 구조를 조금 살펴보겠습니다. 만약 google.com/foods/index라는 URL이 있다면 여기서 google.com도메인(Domain)이고 뒤에 /foods/index경로(Path)라고 합니다. 이 두 가지를 합쳐서 URL이라고 합니다.

 

도메인요청할 서버를 찾아주는 역할을 하는데요. 인터넷에는 DNS(Domain Name System)라는 인터넷 상의 주소록이 있습니다. 여기에 도메인을 요청하여 서버를 찾게 됩니다. 이제까지의 예제에서는 Django 프로젝트가 서버 역할을 하고 있었습니다. 경로요청하는 내용을 담고 있습니다. 서버 안에서 원하는 것이 있는 위치를 나타내어 줍니다.

 

지난 URL(1) 정리 글에서는 무작정 Hello Django가 출력되는 것을 확인하였었는데요, 여기서는 Django 프로젝트에 요청이 왔을 때 어떻게 응답이 되는지 살펴보겠습니다. Django에서는 요청을 받았을 때 Project App파일 안의 urls.py를 제일 먼저 확인합니다. 이것은 settings.py파일 안의 ROOT_URLCONF이 urls파일로 되어있기 때문입니다. 

+) urls.py는 클라이언트의 요청인 URL을 보고 알맞은 로직을 제공하기 위해 계층적으로 구성됩니다.

모든 URL에 대해 분기가 끝나면 알맞은 view를 호출하여 로직 처리를 합니다.

 

costaurant 프로젝트의 urls.py

 

지난 시간을 예로 ~/foods/index URL을 입력하였을 때를 예로 들어보겠습니다.

1. Django가 요청을 받았을 때 위의 urls.py파일에서 입력된 URL과 매칭이 되는 urlpatterns을 찾습니다. 

2. 두 번째 path를 보시면 URL 경로와 foods/가 매칭이 되어 뒤에 있는 include 동작을 하게 됩니다.

3. include('foods.urls')는 foods App 안의 urls파일을 봐라라는 뜻입니다!

 

foods App안의 urls.py 파일

 

4. foods/뒤의 나머지 경로는 index인데요 foods App안의 urls.py에서 매칭이 됩니다.

5. 여기서 URL 매칭이 모두 완료되었으므로 다른 urls로 가는 것이 아니라 view를 호출하게 됩니다. 이때 뒤의 views.index는 views 파일 안의 index를 따르라는 뜻입니다.

 

views.py

6. views안의 index 함수를 따르게 됩니다. index함수는 request를 받아서 HttpResponse를 리턴해 줍니다!

결과로 나온 사이트에서 F12로 개발자 도구를 열었을 때 Hello, Django! 가 h2태그 안에 있는 것도 확인 가능합니다!

 

728x90
반응형

'Python > Django' 카테고리의 다른 글

Web - 템플릿/렌더링  (0) 2021.07.07
Web - URL(1)  (0) 2021.07.05
Web - MVC/MVT Architecture  (0) 2021.07.04
Web - Django App  (0) 2021.07.02
Web - Django project 시작 및 Server  (0) 2021.07.01

댓글