1. 程式人生 > 其它 >Python tornado 之 表單與模板

Python tornado 之 表單與模板

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