[Django 공식문서 번역] HTTP Requests - 1. URL dispatcher

이 글은 본인이 공부를 목적으로 공식문서를 읽으며 정리/번역한 글로서 오역이 있을 수 있을 수 있습니다. 또한 본인이 이미 알고 있거나 불필요하다 느끼는 내용들은 누락될 수 있습니다.

어플리케이션의 URL을 디자인하기 위해서는 URLconf(URL configuration)라는 파이썬 모듈을 만들어야된다. 이 모듈을 파이썬으로 작성되었으며 URL 경로와 파이썬 함수간 매핑을 해준다.

장고가 Request를 처리하는 방식:

1. 장고는 사용해야될 루트 URLconf 모듈을 정한다. 기본적으로 이는 setting에 명시된 ROOT_URLCONF의 값을 사용하지만 만약 HttpRequest 객체에 urlconf 속성이 있다면 속성에서 명시된 값을 사용한다.

2. 장고는 파이썬 모듈을 로드하고 urlpatterns라는 변수를 찾는다. 이는 django.urls.path()django.urls.re_path()인스턴스로 구성되어야 한다.

3. 장고는 URL pattern을 하나씩 순서대로 검사하다가 요청된 URL과 매치되는 첫번째 패턴에서 멈춘다.

4. URL pattern과 매치가 됐다면, 장고는 해당 view를 임포트하고 호출한다. 해당 view는 다음 인자들을 전달 받는다.
    - HttpRequest 객체
    - 만약 매치된 URL pattern이 named group을 포함하고 있지 않다면, 정규표현식에서 매치된 값들이 positional argument로 전달된다
    - keyword argument는 경로 표현식의 named parts로 이루어져 있으며, django.urls.path()나 django.urls.re_path()의 kwargs argument로 덮어씌워진다.

5. 만약 매칭되는 URL pattern을 찾지 못했거나 exception이 발생했다면, 장고는 error-handling view를 호출한다.


Path Converters

str: 비어있거나 '/'를 제외한 string을 매칭한다.
int: 0이나 양의 정수를 매칭한다.
slug: ASCII문자들이나 숫자들, 그리고 '-'와 '_'까지 매칭한다.
uuid: UUID를 매칭한다. 무조건 dash가 포함되어야하며 문자들은 소문자여야된다.
path: 비어있지않은 string을 매칭하며 '/'까지 포함될 수 있다.

댓글

이 블로그의 인기 게시물

[Django REST Framework] create() vs perform_create()

[웹 보안] CORS란?

3. GRAPHQL FRAGMENTS