2.输入和输出

一、输出

1.self.write()

self.write("要输出的文字")

2.self.write() #以变量输出

class OutInHandler(tornado.web.RequestHandler):
    def get(self):
        name = self.get_argument("name","no")
        self.write(name)

只需要在路由表加上相应的列表即可

import tornado.ioloop   #I/O事件循环
import tornado.web  #web服务
import tornado.httpserver   #单线程的HTTP服务
import tornado.options  #命令行解析模块,让模块定义自己的选项
from tornado.options import define,options

define('port',default=8000,help='run port',type=int)

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("你好,素心!!!")

class OutInHandler(tornado.web.RequestHandler):
    def get(self):
        name = self.get_argument("name","no")
        self.write(name)

#路由表,其实就是将以上类实例化,然后赋值http_server
application = tornado.web.Application(
    [
        (r"/main",MainHandler),
        (r"/get",OutInHandler),
    ]
)

if __name__ == "__main__":
    tornado.options.parse_command_line()
    http_server = tornado.httpserver.HTTPServer(application)
    http_server.listen(options.port)
    tornado.ioloop.IOLoop.instance().start()
tornado输出

加上name参数之后,前端显示该信息,如果没有name,则默认no(并不是空);如果get_arguments(),输入两个参数,即“name='suxin'&name=SuXin”,则传输最后一个,在后台以列表形式记录提交信息。

通常经过URL传参。

输出的类型换成列表则报错

TypeError: write() only accepts bytes, unicode, and dict objects. Lists not accepted for security reasons; see http://www.tornadoweb.org/en/stable/web.html#tornado.web.RequestHandler.write

 

英语不大好,只能百度翻译了,大致意思就是:只接受bytes,unicode和dict对象。

如果需要传递列表,则将列表放进字典即可

3.self.flush() #将所有输出内容编程json格式

即:输出的<br>等前端语言可以编译

4.输出指定的HTML文件(self.render())

class TeamHandler(tornado.web.RequestHandler):
    def get(self):
        self.render('01.InOut.html')
template_path = "templates",    #配置HTML文件路径

还需在配置路由表里面添加上HTML文件路径

在这里出现问题较多,排错方法如下

①检查HTML文件的路径;

②不要忘记配置路由;

③检查本地py是否同步到服务器。

5.路由跳转,路由配置不再示范,只展示Handler部分

class RecHandler(tornado.web.RequestHandler):
    def get(self):
        time.sleep(3)
        self.redirect('/team')  #路由跳转

此处睡眠三秒,以便效果明显,一般项目中是通过鼠标动作完成跳转的

6.获取访问客户端的IP地址

class ReqHandler(tornado.web.RequestHandler):
    def get(self):
        self.write(self.request.remote_ip)  #获取访问客户端IP地址

7.常见的方法

二、输入

    def post(self, *args, **kwargs):
        name = self.get_argument("name","no")
        password = self.get_argument("password","no")
        self.write("用户名:%s,密码:%s"%(name,password))
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>tornado</title>
</head>
<body>
<form method="post" action="/get">
    <p>用户名&emsp;<input type="text" name="name"></p>
    <p>&emsp;&emsp;<input type="password" name="password"></p>
    <p><input type="submit">&emsp;<input type="reset"></p>
</form>
</body>
</html>
HTML

获取URL里的参数,然后显示在网页上

 

 三、传参

1.通过URL传参,不用?形式,通过位置传参

class UserHandler(tornado.web.RequestHandler):
    def get(self,name,age):
        self.write("name: %s <br> age: %s"%(name,age))

这里的路由需要变化,使用正则

(r"/user/(.+)/([0-9]+)",UserHandler),

 

2.通过关键字传参

(r"/user/(?P<age>[0-9]+)/(?P<name>[.]+)",UserHandler),

 

posted @ 2018-10-28 12:01  ChanceySolo  阅读(275)  评论(0编辑  收藏  举报