tornado 模板

1. 什么是 Tornado 模板

Tornado 是一个 Python 的 Web 框架,它强调的是异步非阻塞式处理方式,具有高并发的能力,适用于一些网站的场景,如实时 Web 系统等。

Tornado 还提供了一套模板系统,在模板中可以将数据填充到 HTML 页面中,从而生成最终的响应。使用模板可以方便地处理前端与后端的交互。

2. Tornado 模板的使用

2.1 模板的基本用法

Tornado 的模板使用和 Django、Flask 等 Web 框架的模板很类似。下面是一个简单的例子:

import tornado.ioloop

import tornado.web

import os

class MainHandler(tornado.web.RequestHandler):

def get(self):

items = ["Apple", "Orange", "Banana"]

self.render("templates/index.html", title="Welcome to Tornado", items=items)

if __name__ == "__main__":

app = tornado.web.Application([

(r"/", MainHandler),

],

template_path=os.path.join(os.path.dirname(__file__), "templates"))

app.listen(8080)

tornado.ioloop.IOLoop.current().start()

在上面的例子中,我们定义了一个 Web 应用并为其注册了一个路由。当用户访问根路径时,会执行 MainHandler 中的 get 方法。在这个方法中,我们定义了一个列表 items 并将它和一个字符串 "Welcome to Tornado" 一起传递给了 render 方法。

在模板文件 templates/index.html 中,我们可以通过 {{ }} 语法来引用这些变量,如下所示:

<!DOCTYPE html>

<html>

<head>

<title>{{ title }}</title>

</head>

<body>

<ul>

{% for item in items %}

<li>{{ item }}</li>

{% end %}

</ul>

</body>

</html>

2.2 模板语法详解

Tornado 的模板语法与 Django 的模板语法非常相似。下面我们简单介绍一下 Tornado 模板的语法。

2.2.1 基本语法

Tornado 的模板中,我们可以通过 {{ }} 来引用变量。比如:

<h1>{{ title }}</h1>

这段代码将会把变量 title 的值填充到 HTML 页面中。

另外,在 Tornado 的模板中,我们也可以使用 {% %} 来执行某些语句,比如 for 循环、if 判断等,如下面的例子所示:

<ul>

{% for item in items %}

<li>{{ item }}</li>

{% end %}

</ul>

这段代码会循环遍历 items 列表,把每个元素都填充到 HTML 页面中。

2.2.2 过滤器

在 Tornado 的模板中,我们还可以使用过滤器来格式化数据。比如,我们可以使用 datetime 过滤器来格式化日期:

<p>{{ date | datetime("%Y-%m-%d") }}</p>

这段代码会把 date 变量转换成字符串,并按照 "%Y-%m-%d" 的格式输出。

2.3 模板继承

Tornado 的模板还支持继承和块标记。我们可以在一个模板中定义一些块,然后在其他模板中通过继承这个模板来重载这些块。下面是一个简单的例子:

父模板 base.html:

<!DOCTYPE html>

<html>

<head>

<title>{% block title %}{% end %}</title>

</head>

<body>

{% block content %}{% end %}

</body>

</html>

子模板 index.html:

{% extends "base.html" %}

{% block title %}Welcome to Tornado{% end %}

{% block content %}

<h1>Hello, Tornado!</h1>

{% end %}

这个例子中,我们定义了一个名为 base.html 的父模板,并在其中定义了两个块:title 和 content。接下来,我们定义了一个名为 index.html 的子模板,并通过 {% extends "base.html" %} 语句来继承了父模板。在子模板中,我们通过 {% block title %} 和 {% block content %} 语句来重载了父模板中的对应块。

后端开发标签