Tornado框架的模板使用(三)

2020-04-15  本文已影响0人  梦捷者

一、Tornado框架模板的简介

参考文档:https://tornado-zh.readthedocs.io/zh/latest/guide/templates.html
Tornado 也可以使用其他的Python模板语言, 虽然没有准备把这些系统整合 到 RequestHandler.render里面,而是简单的将模板转成字符串并传递给 RequestHandler.write进行发送渲染到前面。

二、模板的配置

1、配置

2、示例

import tornado.web
import tornado.ioloop
from tornado.options import options, define, parse_command_line

define('port', default=8000, type=int, help="运行端口")


class FirstHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("<h1><span style='color:red'>这是首页面</span></h1>")


class PictureHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("<html><body><img src='/static/images/1.jpg'></body></html>")
        #这里satic前面加上/(正斜杆)是代表绝对路径,如果不加,则代表相对路径,但是在多个路由的时候就会报错。

    def initialize(self):
        print('对象{}被创建了'.format(self))


class TemplateHandler(tornado.web.RequestHandler):
    def get(self):
        username = '小龙'
        items = ["Item 1", "Item 2", "Item 3"]
        self.render('1demo.html', username=username, title="基础模板", items=items) #这里直接会在template文件夹下进行寻找

    def post(self):
        username = self.get_argument('name', 'no')
        self.render('2demo.html', username=username)
    #在浏览器中输入http://192.168.212.131:8000/template?name=xiaolong是不会对post请求有作用的,用以下的方式进行操作是可以的


def make_app():
    handlers = [
        (r'/', FirstHandler),
        (r'/picture', PictureHandler),
        (r'/template', TemplateHandler)
    ]
    settings = \
        {'debug': True,
         'static_path': 'static',
         'template_path': 'templates'
         }#直接写staic这里是相对路径,这是相对与这个脚本的路径而言的
    app = tornado.web.Application(handlers=handlers, **settings)
    return app


if __name__ == '__main__':
    app = make_app()
    # app.listen(8000)
    parse_command_line()
    port_new = options.port
    app.listen(port_new)
    print(type(port_new))
    print("Tornado server running at %s port" % port_new)
    tornado.ioloop.IOLoop.current().start()

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{{ title}}</title>
</head>
<br>
大家好!我是{{ username }}</br>
传过来的数据是{{items}}
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Torando</title>
</head>
<body>
欢迎{{username}}!!!
</body>
</html>

3、当访问路径中post方法的方式

三、模板语法

Tornado模板支持 控制语句(control statements) 和 表达式(expressions)。
参考文档和示例:https://tornado-zh.readthedocs.io/zh/latest/template.html#module-tornado.template

1、控制语句

2、表达式被包在 {{ 和 }} 之间, 即 {{ items[0] }},以上有做解释。

四、模板的转义

五、静态文件的引用(图片)

上一篇 下一篇

猜你喜欢

热点阅读