Python tornado 之 表單與模板
阿新 • • 發佈:2021-08-04
1、說明
(1)通過self.render()使用模板
(2)使用表單,只要接收表單引數可以
示例功能:通過訪問根目錄,填寫表單,提交後轉到模板
demo1.py
import os.path import tornado.ioloop import tornado.web from tornado.options import define from tornado.options import options class BaseHandler(tornado.web.RequestHandler): def get(self): self.render('index.html') class ShowHandler(tornado.web.RequestHandler): def post(self, ): name = self.get_argument('name') sex = self.get_argument('sex') birthday = self.get_argument('birthday') address = self.get_argument('address') kwargs = dict(name=name, sex=sex, birthday=birthday, address=address) self.render('show.html', **kwargs) if __name__ == '__main__': # 定義埠, 可以全域性使用options.port獲取,可通過命令列更改 define('port', default=8080, help='設定啟動服務的埠', type=int) options.parse_command_line() # 分析命令列引數 application = tornado.web.Application( handlers=[('/', BaseHandler), ('/show', ShowHandler)], template_path=os.path.join(os.path.dirname(__file__), 'template') ) # 設定路由 """ /show 對應 index.html表單中的 action """ # 監聽埠8080,可以通過命令列改變,python xxx.py --port=8090 application.listen(options.port) tornado.ioloop.IOLoop.current().start() # 啟動web服務
需要依賴模板檔案
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>個人資訊填寫</h1> <form method="post" action="/show"> <p>姓名<br><input type="text" name="name"></p> <p>性別<br><input type="text" name="sex"></p> <p>出生年月<br><input type="date" name="birthday"></p> <p>家庭住址<br><input type="text" name="address"></p> <button type="submit">提交</button> </form> </body> </html>
show.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>個人資訊填寫</h1> <p>姓名:{{name}}</p> <p>性別:{{sex}}</p> <p>出生年月:{{birthday}}</p> <p>家庭住址:{{address}}</p> </body> </html>
目錄結構
步驟:
先寫好index.html和show.html,然後在demo1.py同級目錄下新建template資料夾
把index.html和show.html放在template資料夾中
因為以前接觸過Django的模板,所以我這篇筆記不再解釋模板,需要了解模板的可以參考我的學習連結或者自行谷歌
執行
訪問http://127.0.0.1:8080/
點選提交後可以看到這樣的畫面
2、靜態資源的配置
import os.path import tornado.ioloop import tornado.web from tornado.options import define from tornado.options import options class BaseHandler(tornado.web.RequestHandler): def get(self): self.render('static_test.html') if __name__ == '__main__': # 定義埠, 可以全域性使用options.port獲取,可通過命令列更改 define('port', default=8080, help='設定啟動服務的埠', type=int) options.parse_command_line() # 分析命令列引數 template_path = os.path.join(os.path.dirname(__file__), 'template') template_path = os.path.abspath(template_path) application = tornado.web.Application( handlers=[('/', BaseHandler)], template_path=template_path, static_path=os.path.join(template_path, 'static'), debug=True, # 設定為debug模式 ) # 設定路由 # 監聽埠8080,可以通過命令列改變,python xxx.py --port=8090 application.listen(options.port) tornado.ioloop.IOLoop.current().start() # 啟動web服務
static_test.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Test_Static_Resource</title> </head> <body> <img border="0" src={{ static_url("images/1.jpeg") }} alt="Pulpit rock"> </body> </html>
模板中使用static_url來獲取靜態資源的路徑,會自動轉化成專案對應的路徑
例如/static/images/1.jpeg?v=6d10f38c02408f0463cc3dd8ffdb3967 v=xxx確保瀏覽器總是載入檔案的最新版
目錄結構
執行
學習連結http://doc.iplaypy.com/tornado/ch2.html