tornado之模板语法

专栏目录请点击

前提

我们新建如下目录结构
在这里插入图片描述
其中

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h2>Hello World</h2>
</body>
</html>

app.py

import tornado.ioloop
import tornado.web
import os

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.render("index.html")


def make_app():
    return tornado.web.Application(
        # 路由
        [
            (r"/", MainHandler),
        ],
        # 网页模板
        template_path=os.path.join(os.path.dirname(__file__), "templates")
    )

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()

运行并访问http://localhost:8888/,他会返回如下结果在这里插入图片描述

变量与表达式

我们可以想模板index.html中传递一个变量和表达式
index.html

<body>
    <h2>Hello World</h2>
    <h3>num:{{num}}</h3>
    <h3>num + 10:{{num + 10}}</h3>
    <h3>姓名1:{{person["name"]}}</h3>
    <h3>年龄1:{{person["age"]}}</h3>
    <h3>姓名2:{{name}}</h3>
    <h3>年龄2:{{age}}</h3>
    <!-- 变量设置 -->
    {% set sex = "男" %}
    <h3>性别:{{sex}}</h3>
</body>

handler

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        num = 5
        person1 = {
            "name": "sunwukong",
            "age": 18
        }
        person2 = {
            "name": "zhubajie",
            "age": 25
        }
        self.render("index.html", num=num, person=person1, **person2)

效果
在这里插入图片描述

流程控制

循环

index.html

<ul>
    {% for _i in _list %}
    <li>{{_i}}</li>
    {% end %}
</ul>
<ul>
    {% for _index,_element in enumerate(_list) %}
    <li>序号:{{_index}},元素:{{_element}}</li>
    {% end %}
</ul>

handler

_list = [1, 2, 3, 4]
self.render("index.html",  _list=_list)

此外,我们还可以使用while来做循环,不常用,这里就不做解释了
效果
在这里插入图片描述

判断

index.html

<h2>if</h2>
{% for _index,_element in enumerate(_list) %}
    {% if _element == 3 %}
    <li>输出的元素为3,序号:{{_index}},元素:{{_element}}</li>
    {% end %}
{% end %}

handler

_list = [1, 2, 3, 4]
self.render("index.html",  _list=_list)

效果
在这里插入图片描述

函数

static_url

这是一个内置函数,用于用于静态路径的引入

我们在项目的根目录下新建static/css/index.css,并写上如下代码

index.css

.title{
    color: red;
}

index.html

<body>
    <h2>Hello World</h2>
    <p class="title">我爱我的祖国</p>
</body>

handler

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.render("index.html")


def make_app():
    return tornado.web.Application(
        # 路由
        [
            (r"/", MainHandler),
        ],
        # 网页模板
        template_path=os.path.join(os.path.dirname(__file__), "templates"),
        # 静态路径
        static_path=os.path.join(os.path.dirname(__file__),"static")
    )


if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()

效果
在这里插入图片描述

自定义函数

index.html

<body>
    <h2>Hello World</h2>
    <section>
        <span>result</span>
        <span>{{myFun(1,2)}}</span>
    </section>
</body>

handler

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        def myFun(num1,num2):
            return num1 + num2
        self.render("index.html", myFun=myFun)

结果

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值