[파이썬] web2py에서의 URL 라우팅

URL 라우팅은 웹 애플리케이션에서 사용자 요청을 처리할 적절한 핸들러 또는 뷰로 연결하는 작업입니다. web2py는 Python 기반의 웹 프레임워크로서 강력한 URL 라우팅 기능을 제공합니다. 이를 통해 사용자가 요청한 URL 경로를 파싱하고, 해당 요청을 처리할 액션을 결정할 수 있습니다.

기본 URL 라우팅

web2py의 기본 URL 라우팅 방식은 매우 간단합니다. 애플리케이션의 routes.py 파일을 사용하여 URL 경로와 해당 경로를 처리할 컨트롤러 및 액션을 지정할 수 있습니다. routes.py 파일은 models 디렉토리 내에 있어야 합니다.

간단한 예로, /default/index URL 경로를 default 컨트롤러의 index 액션으로 매핑하는 설정을 보여드리겠습니다.

# routes.py

routers = dict(
    BASE = dict(
        default_application='your_app', # 애플리케이션 이름
        controllers=['default'], # 사용할 컨트롤러 지정
    ),
    # URL 경로 및 해당 액션 매핑
    ('/default/index', '/your_app/default/index')
)

위의 예시에서는 /default/index URL 경로를 your_app 애플리케이션의 default 컨트롤러의 index 액션으로 매핑하도록 설정하였습니다.

동적 URL 라우팅

때로는 URL에 변수를 포함하여 동적으로 경로를 생성해야 할 수도 있습니다. web2py에서는 이러한 요구를 처리하기 위해 argsvars 매개변수를 사용할 수 있습니다.

예를 들어, /user/profile/{id} URL 경로를 다양한 사용자의 프로필로 연결하고자 한다면, 아래와 같이 routes.py 파일을 작성할 수 있습니다.

# routes.py

routers = dict(
    BASE = dict(
        default_application='your_app',
        controllers=['default'],
    ),
    # 동적 URL 경로 및 해당 액션 매핑
    ('/user/profile/%(id)s', '/your_app/default/profile') # %(id)s는 변수를 의미함
)

위의 예시에서는 /user/profile/{id} URL 경로에서 id라는 변수를 추출하여 your_app 애플리케이션의 default 컨트롤러의 profile 액션으로 전달합니다. 이렇게 함으로써 다양한 사용자의 프로필에 대한 요청을 동적으로 처리할 수 있습니다.

추가 설정

URL 라우팅을 설정하는 동안 더욱 복잡한 매핑 및 규칙을 지정하고 싶다면, web2py에서 제공하는 regexp을 사용할 수 있습니다. 이를 통해 더욱 세밀한 URL 라우팅 규칙을 설정할 수 있습니다.

# routes.py

routers = dict(
    BASE = dict(
        default_application='your_app',
        controllers=['default'],
    ),
    # 정규식을 사용한 URL 경로 매핑
    (r'/user/profile/(?P<id>\d+)/edit', '/your_app/default/edit_profile') 
)

위의 예시에서는 /user/profile/{id}/edit URL 경로에서 id라는 변수를 추출하여 your_app 애플리케이션의 default 컨트롤러의 edit_profile 액션으로 전달합니다. 이러한 방식으로 URL의 미리 정의된 패턴과 대응되는 동적 변수를 추출할 수 있습니다.

결론

web2py는 강력한 URL 라우팅 시스템을 제공하여 웹 애플리케이션의 URL을 쉽게 구성하고 라우팅할 수 있도록 도와줍니다. routes.py 파일을 사용하여 기본적인 URL 매핑에서부터 동적인 URL 경로까지 다양한 요구 사항을 처리할 수 있습니다. 또한, 복잡한 URL 패턴과 규칙을 정규식을 사용하여 정의할 수 있어 유연한 URL 라우팅이 가능합니다.