본문 바로가기
FRAMEWORK/Django

[Django] URL

by Zzero_o 2024. 1. 17.

 

 


 

URL

 

 URL은 인터넷에서 특정 자원(웹페이지, 이미지, 동영상 등)의 위치를 지정하는 주소이다. 이는 웹 브라우저나 다른 웹 클라이언트가 웹 서버에게 특정 자원을 요청할 때 사용된다.

 

 URL의 구조는 다음과 같다.

 

 

 

 busan.ac.kr/manage/post

 

여기서 busan.ac.kr은 도메인으로 요청할 서버를 찾아주는 역할을 한다. busan.ac.kr 뒤는 경로로 서버 내에서 원하는 것이 있는 위치를 뜻한다.

 


 

URL 입력시 디장고 프로젝트

 

   127.0.0.1:8000 / populars/index

 

 

 

   1) 프로젝트 앱 디렉토리 > settings.py

 

   ROOT_URLCONF

 

      디장고 애플리케이션의 URL 패턴을 관리하는데 사용되며, URL 패턴을 사용하여 요청이 들어왔을 때, 어떤 뷰 함수 또는 함수로 라우팅할 지 결정한다. 기본적으로 프로젝트의 'urls.py' 파일을 가리킨다.

    다시 말해, 'mzbusan_django'에 맞는 도메인이라면 (127.0.0.1:8000 이라면), 'mabusan_django' 앱(프로젝트 앱) 내의 urls.py로 이동한다는 의미이다.

 

 

 

   2) 프로젝트 앱 디렉토리 > urls.py

 

   입력된 URL의 경로와 매치가 되는 urlpattern이 있는지 urlpatterns 내의 리스트를 통해 확인한다.

 도메인 뒤의 경로 (populars/index)를 확인해보면 일치하는 url 패턴이 있으므로 해당 패턴이 가리키는 곳으로 이동한다.

 

 

 

   3) populars 앱 디렉토리 > urls.py

 

   입력된 URL의 경로와 매치가 되는 urlpattern이 있는지 urlpatterns 내의 리스트를 통해 확인한다.

경로 /index에서 index와 일치하기 때문에 해당 패턴이 가리키는 곳을 본다.

 

 

 

   4) populars 앱 디렉토리 > views.py > index 함수

  

   해당하는 함수가 시키는대로 동작한다.

 

 


 

urls.py에 URL 작성 방법

 

 URL의 끝에 있는 슬래시를 트레일링 슬래시라고 한다. 도메인 끝에 나오는 슬래시는 그 유무에 따른 차이가 없지만, 경로에 대해서는 슬래시의 유무에 따라 달라진다.

 

 그렇기 때문에 디장고는 트레일링 슬래시가 붙어있지 않은 URL로 요청이 들어오면, 먼저 해당 URL과 딱 맞는 URL 패턴이 있는지 보고, 만약 없다면 슬래시를 붙인 URL로 다시 리디렉션하는 설정이 기본적으로 되어 있다.

 

 

 

   1) 다른 URL로 이동하기 위한 URL을 적을 때, 앞에 슬래시가 있으면 도메인으로부터의 경로를 의미한다.

 

      /index/

 

      이 URL 패턴은 절대 경로로서 항상 도메인에서 시작한다.

 

 

      현재 위치가 127.0.0.1:8000/populars이고, populars에는 index함수가 있다고 가정을 하겠다.

      

   사진을 보면 알 수 있듯, /index/를 입력하면 현재 위치와 상관없이, 127.0.0.1:8000/index로 가려고 한다. 하지만 실제로 그 위치에는 index라는 함수가 없기 때문에 오류가 발생한다.

   즉, 절대함수를 사용하면 오류가 나는 경우가 많기 때문에 디장고에서는 절대함수를 잘 사용하지 않는다.

 

 

 

   2) 다른 URL로 이동하기 위한 URL을 적을 때, 앞에 슬래시가 없으면 현재 URL 뒤에 이동하는 URL이 연결된 경로가 된다.

 

      index/

 

      이 URL 패턴은 상대 경로로서 현재 경로에서 상대적으로 index/로 이동한다.

 

   상대 경로는 절대 경로와 달리 현재 경로에서 index/라는 함수로 이동하기 때문에 오류가 나지 않고 올바른 페이지를 확인할 수 있다.

 

 

 

  추가적인 정보로 urlpatterns에 ' '를 입력하면 메인페이지를 뜻한다.

 


 

정리

 

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

[Django] 템플릿(Template) (1)  (0) 2024.01.17
[Django] render 함수  (0) 2024.01.17
[Django] 웹페이지 (Web Page)  (0) 2024.01.16
[Django] 앱 (App)  (0) 2024.01.16
[Django] 프로젝트(Project)  (1) 2024.01.16