[파이썬] Tornado에서의 템플릿 렌더링

템플릿 렌더링은 웹 애플리케이션에서 동적 데이터를 HTML로 변환하여 사용자에게 보여주는 중요한 작업입니다. Tornado는 간단하고 빠른 웹 프레임워크로, 이러한 템플릿 렌더링을 쉽게 구현할 수 있습니다. 이 블로그 포스트에서는 Tornado에서의 템플릿 렌더링에 대해 알아보겠습니다.

템플릿 엔진 선택

Tornado에서는 Jinja2Mako 등 다양한 템플릿 엔진을 사용할 수 있습니다. 이 블로그 포스트에서는 Jinja2를 사용하여 Tornado에서의 템플릿 렌더링을 설명하겠습니다.

Jinja2 설치

Jinja2를 사용하기 위해 먼저 Jinja2 파이썬 패키지를 설치해야 합니다. 다음 명령어를 사용하여 설치할 수 있습니다:

pip install Jinja2

Tornado 애플리케이션 설정

먼저, Tornado 애플리케이션에서 템플릿 엔진을 사용하기 위해 설정을 해야 합니다. 다음과 같이 Tornado 애플리케이션 클래스 내부에 설정을 추가합니다:

import tornado.web

class MyApplication(tornado.web.Application):
    def __init__(self):
        handlers = [
            (r'/', MainHandler),
        ]

        settings = {
            'template_path': 'templates',  # 템플릿 파일의 경로 설정
        }

        super().__init__(handlers, **settings)

위 설정에서 template_path는 Tornado가 템플릿 파일을 찾을 경로를 나타냅니다. 이 경로는 템플릿 파일을 저장하는 디렉토리의 경로로 설정해야 합니다.

템플릿 파일 작성

다음으로, 작성한 HTML 템플릿 파일을 생성해야 합니다. 템플릿 파일은 Tornado 애플리케이션이 template_path에서 지정한 디렉토리에 위치해야 합니다.

예를 들어, templates 디렉토리 아래에 index.html 템플릿 파일을 작성해 보겠습니다:


<!DOCTYPE html>
<html>
<head>
    <title>Tornado 템플릿 렌더링</title>
</head>
<body>
    <h1>환영합니다!</h1>
    <p>안녕하세요, {{ name }}님!</p>
</body>
</html>

위 템플릿 파일은 {{ name }} 부분에 동적으로 변경되는 데이터를 나타냅니다.

템플릿 렌더링

이제 Tornado 애플리케이션에서 템플릿을 렌더링하는 방법을 알아보겠습니다. Tornado의 요청 핸들러 내에서 다음과 같이 템플릿을 렌더링할 수 있습니다:

import tornado.web
import tornado.ioloop
from tornado.template import Template

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        template = Template(filename='templates/index.html')
        self.write(template.generate(name='John'))

위 코드에서 Template 클래스를 사용하여 index.html 템플릿 파일을 로드하고, generate 메소드를 사용하여 템플릿을 렌더링한 후 write 메소드를 사용하여 클라이언트에게 응답을 보냅니다. generate 메소드는 템플릿에서 사용된 동적 데이터를 인자로 받습니다.

결과 확인

이제 Tornado 애플리케이션을 실행하고 웹 브라우저에서 확인해 보세요. localhost:8888 주소로 접속하면 다음과 같은 결과를 볼 수 있습니다:


Tornado 템플릿 렌더링

환영합니다! 안녕하세요, John님!


위와 같이 Tornado에서 간단하게 템플릿을 렌더링하여 웹 애플리케이션을 개발할 수 있습니다. 이렇게 작성한 템플릿 파일은 필요에 따라 동적 데이터를 추가하여 웹 페이지를 다양하게 개발할 수 있습니다.

이상으로 Tornado에서의 템플릿 렌더링에 대해 알아보았습니다. 템플릿 엔진을 활용하여 다양한 기능을 개발할 수 있으니, 추가적인 학습과 실험을 통해 더욱 높은 수준의 웹 애플리케이션을 개발해보세요!