[파이썬] Django의 URL 패턴과 라우팅

Django는 웹 애플리케이션을 개발할 때 URL 패턴과 라우팅을 사용하여 요청을 적절한 뷰 함수로 연결하는 기능을 제공합니다. URL 패턴은 어떤 URL이 어떤 뷰 함수와 연결되는지를 정의하고, 라우팅은 실제로 요청이 들어올 때 해당 URL 패턴에 따라 적절한 처리를 하도록 도와줍니다.

URL 패턴 설정하기

Django에서 URL 패턴은 urls.py 파일에서 정의됩니다. 이 파일은 모든 URL 패턴과 그에 해당하는 뷰 함수를 관리하는 중앙 집중식 설정 파일입니다.

다음은 urls.py 파일의 예시입니다:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, name='home'),
    path('about/', views.about, name='about'),
    path('post/<int:pk>/', views.post_detail, name='post_detail'),
]

위 코드에서 path() 함수를 사용하여 URL 패턴을 정의합니다. 첫 번째 인자는 패턴에 해당하는 URL을 의미하며, 두 번째 인자는 그 URL 패턴에 매칭되는 뷰 함수를 가리킵니다. 세 번째 인자인 name은 해당 URL 패턴에 대한 식별자입니다.

위의 예시에서는 루트 URL('')에 해당하는 요청을 home 뷰 함수로 연결하고, about/ URL에 해당하는 요청을 about 뷰 함수로 연결합니다. 또한, post/<int:pk>/ URL에 해당하는 요청을 post_detail 뷰 함수로 연결하고 <int:pk> 부분은 정수형 파라미터를 받아올 수 있도록 합니다.

URL 라우팅 처리하기

URL 패턴을 설정한 후, Django는 들어오는 HTTP 요청을 적절한 URL 패턴과 비교하여 라우팅을 수행합니다. 일치하는 URL 패턴을 찾으면 해당하는 뷰 함수를 실행하게 됩니다.

URL 라우팅은 Django의 웹 서버가 처리하는 과정이므로 별도의 설정이 필요하지 않습니다. 개발 중이거나 테스트 중인 경우 manage.py runserver 명령을 사용하여 내장된 개발 서버를 실행하면 URL 라우팅이 자동으로 처리됩니다.

URL 패턴에 인자 전달하기

URL 패턴 설정에서 <int:pk>/와 같이 <...>으로 감싸인 부분은 해당 URL이 숫자형 인자를 받아올 수 있도록 지정하는 부분입니다. 이러한 인자를 뷰 함수에서 사용하려면 해당 뷰 함수의 매개변수로 인자를 받아와야 합니다.

def post_detail(request, pk):
    # pk를 이용하여 해당 포스트를 조회하는 로직 구현
    # ...
    
    return render(request, 'post_detail.html', context)

위의 예시에서 post_detail 뷰 함수는 requestpk라는 매개변수를 갖습니다. URL 패턴에서 정의된 <int:pk>/ 부분이 자동으로 pk 매개변수로 전달되며, 이를 이용하여 해당 포스트를 조회하는 로직을 구현할 수 있습니다.

정리하기

Django의 URL 패턴과 라우팅 기능은 웹 애플리케이션 개발에 있어서 핵심적인 부분입니다. URL 패턴을 설정하고 라우팅을 처리함으로써 요청과 뷰 함수를 적절하게 매칭시킬 수 있습니다. 이를 통해 웹 애플리케이션의 기능을 구현하는 데 필요한 다양한 URL 패턴과 인자 전달을 유연하게 다룰 수 있습니다.

Django는 URL 패턴과 라우팅을 위한 풍부한 기능을 제공하므로, 필요에 따라 다양한 설정을 추가하고 확장하여 웹 애플리케이션을 개발할 수 있습니다.