安装 Jinja2
首先,确保安装了 Jinja2。可以使用以下命令进行安装:
pip install jinja2
Tornado 中使用 Jinja2 模板引擎
以下是一个简单的 Tornado 应用程序,演示了如何使用 Jinja2 模板引擎渲染用户界面。
import tornado.ioloop
import tornado.web
from tornado.options import define, options
from tornado.web import RequestHandler, Application
from jinja2 import Environment, FileSystemLoader
define("port", default=8888, help="run on the given port", type=int)
class BaseHandler(RequestHandler):
def initialize(self):
# 初始化 Jinja2 模板引擎
self.env = Environment(loader=FileSystemLoader("templates"))
def render_template(self, template_name, **kwargs):
template = self.env.get_template(template_name)
content = template.render(kwargs)
self.write(content)
class MainHandler(BaseHandler):
def get(self):
# 在主处理器中渲染模板
self.render_template("index.html", title="Tornado Jinja2 Demo")
def make_app():
return Application([
(r"/", MainHandler),
], **settings)
if __name__ == "__main__":
app = make_app()
app.listen(options.port)
tornado.ioloop.IOLoop.current().start()
模板文件示例
在项目根目录下创建一个名为 templates 的文件夹,并在其中放置 Jinja2 模板文件。例如,创建一个 index.html 文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ title }}</title>
</head>
<body>
<h1>{{ title }}</h1>
<p>Welcome to Tornado with Jinja2!</p>
</body>
</html>
在模板文件中,可以使用双花括号 {{ ... }} 插入变量,这些变量将在渲染时由 Tornado 提供的数据填充。
注意事项
- 在 BaseHandler 类中初始化了 Jinja2 模板引擎,并定义了 render_template 方法用于渲染模板。所有的处理器类可以继承 BaseHandler,并通过 self.render_template 方法渲染模板。
- 在模板中使用 {{ ... }} 插入变量,使用 {% ... %} 包裹控制结构,如循环和条件语句。
- 模板文件应该存放在一个特定的目录中,上述示例使用了名为 templates 的目录。
通过这种方式,你可以在 Tornado 中使用模板引擎渲染动态的用户界面。根据具体项目的需求,你可以选择使用不同的模板引擎,但使用 Jinja2 是一种常见的选择。
转载请注明出处:http://www.zyzy.cn/article/detail/7421/Tornado