Tornado基本使用
生活随笔
收集整理的這篇文章主要介紹了
Tornado基本使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- Tornado的安裝
- Tornado基本使用
- Tornado各種url寫法
- 配置settings & 獲取get,post請求
- Tornado渲染
- Tornado多文件上傳
Tornado的安裝
1、pip3安裝pip3 install tornado2、源碼安裝https://pypi.python.org/packages/source/t/tornado/tornado-4.3.tar.gzTornado基本使用
import tornado.ioloop import tornado.web#1、 處理訪問/index/的get請求: http://127.0.0.1:8888/index/ class MainHandler(tornado.web.RequestHandler):def get(self):self.write("I am index!!")# self.redirect('http://www.baidu.com')# self.render('index.html',k1='v1')#2、 處理訪問 /login/的post請求和get請求: http://127.0.0.1:8888/login/ class LoginHandler(tornado.web.RequestHandler):def get(self):self.write('login')def post(self,*args,**kwargs):self.write('login post')#3、 配置settings settings = {'template_path': 'template', # 配置html文件模板位置'static_path': 'static', # 配置靜態文件路徑(圖片等)'static_url_prefix': '/static/', # 前端引入靜態文件路徑 }#4 路由系統 application = tornado.web.Application([(r"/index/", MainHandler),(r"/login/", LoginHandler), ],**settings)#5 啟動這個tornado這個程序 if __name__ == "__main__":application.listen(8888)tornado.ioloop.IOLoop.instance().start()Tornado各種url寫法
- 無正則匹配url (http://127.0.0.1:8000/index/?nid=1&pid=2)
- 基于(\d+)正則的url
- 基于正則分組(?P\d+),可以不考慮接收參數順序 (推薦)
配置settings & 獲取get,post請求
- settings可配置參數
- 獲取get、post請求
app.py
import tornado.ioloop import tornado.web#1、 處理訪問/index/的get請求: http://127.0.0.1:9999/index class MainHandler(tornado.web.RequestHandler):def get(self):self.write("I am index!!")# self.redirect('http://www.baidu.com')# self.render('index.html',k1='v1')#2、 處理訪問 /login/的post請求和get請求: http://127.0.0.1:9999/login class LoginHandler(tornado.web.RequestHandler):def get(self):#2.1 獲取url中以get方式傳遞過來的數據: http://127.0.0.1:9999/login/?username=zhangsan# print(self.get_query_argument('username')) # zhangsan# print(self.get_query_arguments('username')) # ['zhangsan']# print( self.get_argument('username') ) # get和post兩種請求傳遞的數據都能獲取self.render('login.html')def post(self,*args,**kwargs):#2.2 獲取請求體中以post傳遞的數據# print( self.get_body_argument('faver') ) # 僅能獲取單選,多選僅能獲取最后一個# print( self.get_body_arguments('faver') ) # ['1', '2', '3'] 獲取多選#2.3 get和post兩種請求傳遞的數據都能獲取# print( self.get_argument('username') )#2.4 設置和獲取cookie# self.cookies# self.set_cookie()#2.5 設置和獲取請求頭# self._headers# self.get_header()self.write('login post')#3、 配置settings settings = {'template_path': 'template', # 配置html文件模板位置'static_path': 'static', # 配置靜態文件路徑(圖片等)'static_url_prefix': '/static/', # 前端引入靜態文件路徑 }#4 路由系統 application = tornado.web.Application([(r"/index/", MainHandler),(r"/login/", LoginHandler), ],**settings)#5 啟動這個tornado這個程序 if __name__ == "__main__":application.listen(9999)tornado.ioloop.IOLoop.instance().start()- /templates/login.html
- /templates/base.css
Tornado渲染
- for循環
app.py
import tornado.ioloop import tornado.webclass MainHandler(tornado.web.RequestHandler):def get(self):self.render("index.html", username='tom',list_info=[11, 22, 33],user_dic={'username':'zhangsan','age':77})application = tornado.web.Application([(r"/index", MainHandler), ])if __name__ == "__main__":application.listen(8888)tornado.ioloop.IOLoop.instance().start()index.html
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title> </head> <body><h3>用戶名:{{username}}</h3>{% for item in list_info %}<li>{{item}}</li>{% end %}<p></p>{% for item in user_dic %}<li>{{item}} : {{user_dic[item]}}</li>{% end %} </body> </html>- if、in、判斷相等
app.py
import tornado.ioloop import tornado.webclass MainHandler(tornado.web.RequestHandler):def get(self):self.render("index.html", list_info=[11, 22, 33],username='tom')application = tornado.web.Application([(r"/index", MainHandler), ])if __name__ == "__main__":application.listen(8888)tornado.ioloop.IOLoop.instance().start()index.html
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title> </head> <body>{% if 11 in list_info %}true{% else %}false{% end %}{% if username == "tom" %}my name is {{username}}{% else %}not tom{% end %} </body> </html>Tornado多文件上傳
app.py
import tornado.ioloop import tornado.webclass MainHandler(tornado.web.RequestHandler):def get(self):self.render('index.html')def post(self, *args, **kwargs):file_metas = self.request.files["fff"]for meta in file_metas:file_name = meta['filename']with open(file_name,'wb') as up:print('hahah')up.write(meta['body'])settings = {'template_path': 'template', }application = tornado.web.Application([(r"/index", MainHandler), ], **settings)if __name__ == "__main__":application.listen(8888)tornado.ioloop.IOLoop.instance().start()index.html
<!DOCTYPE html> <html> <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><title>上傳文件</title> </head> <body><form id="my_form" name="form" action="/index" method="POST" enctype="multipart/form-data" ><input name="fff" id="my_file" type="file" /><input type="submit" value="提交" /></form> </body> </html>總結
以上是生活随笔為你收集整理的Tornado基本使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Tornado介绍
- 下一篇: Django常用的模块