Tornado -- 2 输入和输出

输出:

输出是通过write方法实现的:

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write('this is my first WebServer')

查看write的源码

如果传入的不是bytes,unicode,dict,就会报错,字典类型的,会自动转化为json格式,

所以,write能够输出的格式就有三种。

现在先来看bytes和unicode:

 结果:

 当我们用到字典以后,

 结果就会变成这样:

 再回头去看截图的源码,不能发现,如果内容有字典,就直接全部转化成了json字符串了。

解决办法:self.flush()     (先刷新前面的,再加载后面的)

 结果:

如果需要显示列表:

 结果:

总代码:

import tornado.ioloop
import tornado.web
import tornado.httpserver
import tornado.options
# 这里需要注意define和options的顺序不能换,不然define不生效
from tornado.options import define, options

# 命令行运行tornado,会默认使用8080端口
# 或者python python.py --port=8000 可以自定义端口
define('port', default=8080, help='run port', type=int)

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write('hello this is my first WebServer') # unicode
        self.write('<br/>')
        self.write(b'Nice to meet you! <br/> Nice to meet you too!') # bytes
        self.flush() # 解决有字典全转化为json的情况
        self.write({                 # dict
            'name': 'pywjh',
            'age': 18
        })
        self.write('<br/>')
        lis = ['apple', 'bear', 'car'] # 列表可以转化为json再展示
        from tornado import escape # 也可以直接用json库的json.dumps()方法
        lis = escape.json_encode(lis)
        self.write(lis)


application = tornado.web.Application(
    [
        (r'/', MainHandler),
    ]
) # 类的实例化

if __name__ == '__main__':
    tornado.options.parse_command_line() # 打印运行日志
    http_server = tornado.httpserver.HTTPServer(application)
    http_server.listen(options.port) # 绑定端口号
    tornado.ioloop.IOLoop.current().start() # 开启服务器

 页面渲染

输出一个完整的页面(输出文件):

 前端代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>input_output</title>
</head>
<body>
  <p>你好</p>
  <div>很高心见到你</div>
</body>
</html>

 后端代码:

import tornado.ioloop
import tornado.web
import tornado.httpserver
import tornado.options
# 这里需要注意define和options的顺序不能换,不然define不生效
from tornado.options import define, options

# 命令行运行tornado,会默认使用8080端口
# 或者python python.py --port=8000 可以自定义端口
define('port', default=8080, help='run port', type=int)

class TemHandler(tornado.web.RequestHandler): def get(self): self.render('input_output.html') application = tornado.web.Application( handlers = [ (r'/', MainHandler), (r'/tem', TemHandler), ], template_path = 'templates' ) # 类的实例化 if __name__ == '__main__': tornado.options.parse_command_line() # 打印运行日志 http_server = tornado.httpserver.HTTPServer(application) http_server.listen(options.port) # 绑定端口号 tornado.ioloop.IOLoop.current().start() # 开启服务器

 结果:

 重定向:

 结果:

追加:

命令行运行程序,每次修改都要中断再重启,有一个办法,设置debug=True,就不用这么麻烦,只要保存了,服务器就能自动重启

输入:

首先,一个请求所携带的内容,全部都在self.request里面,是一个HTTPServerRequest对象

 

需要什么具体的参数直接点属性就可以取出来

然后我们来看,再使用操作是进行的输入操作

首先:

 但是get_argument方法,就包含了这两个方法得功能。

get请求时:

访问url:http://101.132.181.155:8080/?name=dd

 结果:

 访问URL:http://101.132.181.155:8080/?name=dd&name=cc

 结果:

 为什么get_argument()方法最后选的cc呢?

 因为源码取得是最后一个~~~

post请求:

前端代码:

 后端代码:

结果:

 

 点击以后:

 URL传参:

原文地址:https://www.cnblogs.com/pywjh/p/12253280.html