ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python tornado 之 表单与模板

2021-08-04 20:34:16  阅读:217  来源: 互联网

标签:__ Python 表单 tornado html template path options


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 

标签:__,Python,表单,tornado,html,template,path,options
来源: https://www.cnblogs.com/rainbow-tan/p/15100636.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有