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에서는 이러한 요구를 처리하기 위해 args
와 vars
매개변수를 사용할 수 있습니다.
예를 들어, /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 라우팅이 가능합니다.