zoukankan      html  css  js  c++  java
  • 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传参:

  • 相关阅读:
    Windows CE Notification API的使用方法
    探讨如何成为技术团队管理者
    Android应用---基于NDK的samples例程hello-jni学习NDK开发
    在eclipse中配置android ndk的自动编译环境builders
    用javah 导出类的头文件, 常见的错误及正确的使用方法
    Android下NDK开发环境搭建
    Android系统修改硬件设备访问权限
    Android调试工具之ADB
    关于前端小白的一点小建议
    Vue.js简单实践
  • 原文地址:https://www.cnblogs.com/pywjh/p/12253280.html
Copyright © 2011-2022 走看看