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

本文介绍Tornado Web框架中的输入输出操作,包括如何通过URL传递参数并展示不同类型的输出内容,如字节、Unicode、字典及JSON字符串等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

  • 输出: 从 Tornado 输出到浏览器我们可以使用 write
class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write('Hello Python')
  •  
  • 输入: 可以通过get_argument 和 get_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
  • 1

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 输出总结

输出总结

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

个人分类: tornado框架

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值