天天看點

第二節:Tornado簡介之輸入輸出第二節:Tornado簡介之輸入輸出

第二節: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=許嵩 
    第二節:Tornado簡介之輸入輸出第二節:Tornado簡介之輸入輸出

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=李易峰 
    第二節:Tornado簡介之輸入輸出第二節:Tornado簡介之輸入輸出
  • 注:

    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>')
           
第二節:Tornado簡介之輸入輸出第二節:Tornado簡介之輸入輸出

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
第二節:Tornado簡介之輸入輸出第二節:Tornado簡介之輸入輸出

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)
           
第二節:Tornado簡介之輸入輸出第二節:Tornado簡介之輸入輸出

2.5 輸出總結

第二節:Tornado簡介之輸入輸出第二節:Tornado簡介之輸入輸出

版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/qq_34120459/article/details/79305988

個人分類: tornado架構