第二節: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 接受對象類型
- bytes
class IndexHandler(tornado.web.RequestHandler): def get(self): self.write(b'Tornado <br>')
- Unicode
self.write('<b>Tornado</b><br>')
- 字典
user = { 'name': 'budong', 'age': 18 } self.write(user)
- 其他
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>')
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
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)
2.5 輸出總結
版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/qq_34120459/article/details/79305988
個人分類: tornado架構