라우팅

혜쿰·2023년 10월 19일
0
post-thumbnail

🔎 라우팅이란?

라우팅이란, 네트워크에서 경로를 선택하는 프로세스이다. 컴퓨터 네트워크는 노드라고 하는 여러 시스템과 이러한 노드를 연결하는 경로 또는 링크로 구성된다. 상호 연결된 네트워크에서 두 노드 간의 통신은 여러 경로를 통해 이루어질 수 있다. 라우팅은 미리 정해진 규칙을 사용하여 최상의 경로를 선택하는 프로세스이다.

🔎 Django에서 라우팅

Django 웹 애플리케이션에서 URL 패턴과 라우팅의 관계에 대해 알아보자. URL 패턴은 웹 애플리케이션의 다양한 URL 요청을 특정 뷰 함수 또는 클래스로 라우팅(경로 지정)하는 역할을 한다. 다시 말해, URL 패턴은 클라이언트 요청이 어떤 뷰로 보내질지를 정의하는 중요한 구성 요소이다.

라우팅은 클라이언트가 특정 URL로 요청을 보내면, 웹 애플리케이션이 해당 요청을 어떤 뷰로 연결하고 처리할지를 결정하는 프로세스를 가리킨다. URL 패턴은 이 라우팅 프로세스를 제어하고 정의하는데 사용된다.

Django에서 URL 패턴을 urlpatterns 리스트에 정의하고, 각 패턴은 특정 URL 경로와 그 URL 경로에 해당하는 뷰를 연결한다.

URL 패턴의 정의

  • URL 경로(문자열 패턴)를 정의하고 해당 경로로 들어온 요청을 처리할 뷰를 지정한다.
  • 이러한 URL 패턴들은 Django 애플리케이션의 urls.py 파일에서 설정하며, 이 파일은 웹 애플리케이션의 주요 URL 패턴을 정의하는 중요한 파일이다.

1. Function Views (함수 기반 뷰)

  • Function-based views는 Django에서 가장 기본적인 뷰 타입이다. 뷰는 Python 함수로 정의되며, HTTP 요청을 처리하고 응답을 생성하는 함수이다.

  • 예를 들어, 'my_app' 앱의 'views' 모듈에 'home'이라는 함수 기반 뷰가 있다고 가정하면, 다음과 같이 해당 뷰를 URL 패턴에 연결할 수 있다.

    from my_app import views
    
    urlpatterns = [
        path('', views.home, name='home'),
    ]

2. Class-Based Views (클래스 기반 뷰)

  • Class-based views는 Django에서 뷰를 클래스로 정의하는 방법이다. 클래스 기반 뷰는 클래스 내의 메서드를 사용하여 HTTP 요청을 처리한다.

  • 다른 앱인 'other_app'의 'Home' 클래스 기반 뷰를 URL 패턴에 연결하는 경우의 코드 예시이다.

    from other_app.views import Home
    
    urlpatterns = [
        path('', Home.as_view(), name='home'),
    ]

3. Including Another URLconf (다른 URLconf 포함)

  • Django 애플리케이션은 여러 앱으로 구성될 수 있으며, 각 앱은 자체 URL 패턴을 가질 수 있다. 즉, 각각의 앱에 URL패턴(urls파일)을 가질수 있다는 뜻이다.

  • 'blog'앱에 자체적인 URL패턴을 가지려면, 앱 내에 urls파일을 만들어야 한다. 이때, 대소문자, 스펠링이 유의해야 한다. 'blog' 앱의 URL 패턴을 포함하는 코드 예시이다.

    from django.urls import include, path
    
    urlpatterns = [
        path('blog/', include('blog.urls')),
    ]

이렇게 정의된 URL 패턴을 사용하면 Django 애플리케이션은 특정 URL 경로로 요청이 들어오면 해당 URL 패턴에 따라 적절한 뷰를 호출하게 된다. 이는 Django 웹 애플리케이션의 라우팅 및 뷰 관리를 구성하는 중요한 부분이다. 자세한 내용은 Django의 공식 문서를 참조하여 파악할 수 있다.




참고
https://aws.amazon.com/ko/what-is/routing/

0개의 댓글