Django

[Django 기초] Django의 URL 처리

dio-han 2021. 12. 4. 16:53

 

- URLconf(urls.py)

 

Django에서 URL을 처리하기 위해서는 URLconf 모듈 즉 urls.py를 작성해야 한다.

# urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('URL', views.view)
]

 

- URL 처리 순서

 

 1. 처음 요청이 들어오면 Django는 맨 처음 사용할 URLConf 모듈을 찾는다. 따로 변경하지 않았다면 프로젝트 앱 내

settings.py의 ROOT_URLCONF 설정을 사용한다.

 

 2. ROOT_URLCONF로 정의된 URLConf 모듈을 보고 urlpatterns 리스트 안쪽의 django.urls.path() 함수를 순서대로 실행

 

 3. 요청과 일치하는 URL 패턴이 있다면 django.urls.path() 함수에 따라 view를 호출하거나, 일치하는 URL 패턴 다음의

URL을 하위 URLconf 모듈로 넘긴다.

 

from django.urls import path
from django.urls import include
from . import views

urlpatterns = [
    path('music/', views.player),
    path('video/', include('videoApp.urls')),
    # URL이 '~/video/lecture/django' 라면
    # videoApp의 URLconf에는 'lecture/django'가 넘어갑니다.
]

 

- Path 함수

django.urls.path

path(route, view, kwargs=None, name=None)

o route

URL 문자열을 인수로 받으며 경로 변수(Path Converter)를 사용하며 URL의 일부를 view의 인수로 보낼 수 있다.

 

o Path converters

Django에서 기본으로 제공하는 경로 변환기 이하 경로 변수는 5가지가 있다.

  • str : 경로 구분 기호(/)를 제외한 모든 문자열과 매칭됩니다.
  • int : 0 또는 양의 정수와 매칭됩니다.
  • slug : 문자, 숫자, 하이픈(-), 밑줄(_)로 구성된 문자열과 매칭됩니다.
  • uuid : 범용 고유 식별자(UUID)와 매칭 됩니다. UUID에 관한 내용은 여기서 다루지 않겠습니다.
    다음 문서를 참고하세요. (https://ko.wikipedia.org/wiki/범용고유식별자)
  • path : 경로 구분 기호(/)를 포함한 모든 문자열과 매칭 됩니다.

o view

함수형 view 또는 클래스 기반 view가 들어갈 수 있고 우리가 위에서 적어준 것처럼 include를 사용해서 다른

URLConf 모듈로 연결할 수도 있다.

 

o kwargs

view에 추가 인자를 전달 할 때 사용

 

o name

path 함수가 가지는 URL 패턴에 이름을 붙여 주기 위해 사용하는데 URL을 직접 템플릿에 적지 않게 해주고

URL을 직관적으로 참조할 수 있게 해준다.

 

공식문서

https://docs.djangoproject.com/en/2.2/topics/http/urls/