개요
2024.06.23-[Tornado] RequestHandler - Form 입력 처리, 2024.06.24-[Tornado] RequestHandler - 기타 요청 데이터 접근에서 Tornado 애플리케이션에서 여러 형식의 요청 데이터에 접근해보았다.
이번 글에서는 동젹 URL을 라우팅하고 핸들러에서 접근해본다.
동젹 URL 사용
Application 객체는 라우팅 테이블을 포함하여 전역적인 구성을 담당한다. 라우팅 테이블은 url을 나타내는 정규 표현식과 핸들러 등으로 이루어진 튜플 리스트 또는 URLSpec 리스트가 된다.
즉, 정적 URL이 아니라 동적 URL을 처리하고 싶다면 url 부분을 문자열이 아니라 정규 표현식으로 지정해야 한다. 아래 예시는 user 아래에 아무 url을 받으며, 필요에 따라 숫자만 허용(/user/([0-9]+))하는 등의 제한을 둘 수 있다.
def make_app():
return Application([
(r"/user/(.*)", MainHandler),
])
동적 URL 접근
동적 URL에서 동적인 부분은 핸들러의 get 함수에 문자열로 전달된다. 즉, 접근할 때는 아래와 같이 get 함수에 매개변수를 추가한 뒤, 해당 변수로 전달받아 사용하면 된다.
class MainHandler(RequestHandler):
def get(self, username):
print(username)
self.write(username)
전체 코드는 접은글에 적어둔다.
더보기
from tornado.web import Application, RequestHandler
from tornado.ioloop import IOLoop
class MainHandler(RequestHandler):
def get(self, username):
print(username)
self.write(username)
def make_app():
return Application([
(r"/user/(.*)", MainHandler),
])
if __name__ == "__main__":
app = make_app()
app.listen(8888)
IOLoop.current().start()
참고 문서
https://www.tornadoweb.org/en/branch6.1/guide/structure.html
https://www.tornadoweb.org/en/branch6.1/web.html#tornado.web.Application