日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Tornado基本使用

發布時間:2025/3/21 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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.gz

Tornado基本使用

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)
import tornado.ioloop import tornado.webclass MainHandler(tornado.web.RequestHandler):def get(self):nid = self.get_query_argument('nid')pid = self.get_query_argument('pid')self.write("Hello, world")# http://127.0.0.1:8000/index/?nid=1&pid=2 application = tornado.web.Application([(r"/index/", MainHandler), ])if __name__ == "__main__":application.listen(8000)tornado.ioloop.IOLoop.instance().start()
  • 基于(\d+)正則的url
import tornado.ioloop import tornado.webclass MainHandler(tornado.web.RequestHandler):def get(self,nid,pid):print(nid,pid)self.write("Hello, world")# http://127.0.0.1:8000/index/1/2/ application = tornado.web.Application([(r"/index/(\d+)/(\d+)/", MainHandler), # 這種只能傳數字# (r"/index/(\w+)/(\w+)/", MainHandler), # 這種可以傳數字、字母、下劃線 ])if __name__ == "__main__":application.listen(8000)tornado.ioloop.IOLoop.instance().start()
  • 基于正則分組(?P\d+),可以不考慮接收參數順序 (推薦)
import tornado.ioloop import tornado.webclass MainHandler(tornado.web.RequestHandler):def get(self,nid,pid):print(nid,pid)self.write("Hello, world")# http://127.0.0.1:8000/index/1/2/ application = tornado.web.Application([(r"/index/(?P<nid>\d+)/(?P<pid>\d+)/", MainHandler), # 這種只能傳數字 ])if __name__ == "__main__":application.listen(8000)tornado.ioloop.IOLoop.instance().start()

配置settings & 獲取get,post請求

  • settings可配置參數
settings = {'template_path': 'template', #配置html文件模板位置'static_path': 'static', #配置靜態文件路徑(圖片等)'static_url_prefix': '/static/', #前端引入靜態文件路徑'ui_methods': mt,'ui_modules': md,'xsrf_cookies':True,'cookie_secret':'xxx','login_url':"/auth/login",'autoescape':None,'local':"zh_CN",'debug':True,
  • 獲取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
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href="/static/base.css"> </head> <body><form method="POST" action="/login/"><input type="text" name="username"><h5 class="c1">多選</h5>男球:<input type="checkbox" name="faver" value="1" />足球:<input type="checkbox" name="faver" value="2" />皮球:<input type="checkbox" name="faver" value="3" /><input type="submit" value="提交"></form> </body> </html>
  • /templates/base.css
.c1{color: red; }

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基本使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。