第二节:Tornado简介之输入输出

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34120459/article/details/79305988

一、Tornado输入和输出的简单实例

  • 输出: 从 Tornado 输出到浏览器我们可以使用 write
class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write('Hello Python')
  • 输入: 可以通过get_argumentget_arguments来获取参数值
class AbcHandler(tornado.web.RequestHandler):
    def get(self):
        self.write('Hello Tornado')
        self.write('<br>')

        name = self.get_argument('name', 'no')
        self.write(name)

        name = self.get_arguments('name')
        self.write('<br>'.join(name))

1.1 在AbcHandler类中添加输入单个变量的命令:

class AbcHandler(tornado.web.RequestHandler):
    def get(self):
        self.write('Hello Tornado')
        self.write('<br>')

        name = self.get_argument('name', 'no')
        self.write(name)
  • 在网址栏中添加 name=许嵩
    输入

1.2 在AbcHandler类中添加输入多个变量的命令:

class AbcHandler(tornado.web.RequestHandler):
    def get(self):
        self.write('Hello Tornado')
        self.write('<br>')

        name = self.get_argument('name', 'no')
        self.write(name)

        name = self.get_arguments('name')
        self.write('<br>'.join(name))
  • 在网址栏中添加 name=许嵩&name=李易峰
    多变量输入
  • 注:get_arguments得到的是最后一个值

1.3 完整代码:

import tornado.ioloop
import tornado.web
import tornado.httpserver
import tornado.options

from tornado.options import  define, options

define('port', default=8000, help='run port',type=int )
define('version', default='0.0.0.1', help='version', type=str)

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write('Hello Python')

class AbcHandler(tornado.web.RequestHandler):
    def get(self):
        self.write('Hello Tornado')
        self.write('<br>')

        name = self.get_argument('name', 'no')
        self.write(name)

        name = self.get_arguments('name')
        self.write('<br>'.join(name))

application = tornado.web.Application([
    (r"/", MainHandler),
    (r"/abc", AbcHandler)
])

if __name__ == '__main__':
    tornado.options.parse_command_line()
    print(options.port)
    print(options.version)
    http_server = tornado.httpserver.HTTPServer(application)
    application.listen(options.port)
    tornado.ioloop.IOLoop.instance().start()

二、输出可接受的对象

2.1 接受对象类型

  1. bytes

    class IndexHandler(tornado.web.RequestHandler):
     def get(self):
         self.write(b'Tornado <br>')
    
  2. Unicode

    self.write('<b>Tornado</b><br>')
    
  3. 字典

    user = {
    'name': 'budong',
    
         'age': 18
    
       }
    self.write(user)
    

    注:如果接受的是字典,会把字典转化成 JSON 字符串,因此write也可以接受 JSON 字符串

  4. 其他

li = [1, 2, 3, 4]

import json

li = json.dumps(li)

self.write(li)

print(repr(li))

li = json.loads(li)

print(repr(li))

2.2 flush缓冲区

write会先把内容放在缓冲区,正常情况下,当请求处理完成的时候会自动把缓冲区的内容输出到浏览器,但是可以调用 flush 方法,这样可以直接把缓冲区的内容输出到浏览器,不用等待请求处理完成

self.flush()
time.sleep(3)
self.write('<b>Tornado</b><br>')

flush

2.3 render返回HTML

通过 render 可以返回一个 html 文件

class TemHandler(tornado.web.RequestHandler):
    def get(self):
        self.render('in_out.html')


  • Application中配置html路径:

想要 Tornado 能够正确的找到 html 文件,需要在 Application 中指定文件的位置

template_path='templates

tem

2.4 redirect跳转路由

通过 redirect跳转到指定的路由

class RecHandler(tornado.web.RequestHandler):
    def get(self):
        import time
        time.sleep(3)
        self.redirect(r'/tem')
  • Application中配置路由表
(r'/rec', RecHandler)

rec

2.5 输出总结

输出总结

猜你喜欢

转载自blog.csdn.net/qq_34120459/article/details/79305988