tornado--输入和输出


  • tornado的self.write只接受byte,Unicode,dict三种格式的对象。
  • self.write会存在一个缓冲区,当不强制断开缓冲的时候,它会把当前函数的所有write全部读取,在一次性的返回到html页面
  • self.flush方法会提前结束self.write的缓冲,将之前读取的write内容返回到html页面
  • 当write内容里存在字典时,它会把前面的内容全部按照json格式解析(html标签会失效),若想各自按照特定的格式解析,需要中间用flush隔开。
  • self.finish方法会面不能接self.write,但是可以处理别的代码。
  • 在Application里面增加一个参数debug=True后,在代码有修改后保存后,服务器会自动重启(方便调试,不要在实际生产环境中运用!)
  •  from tornado import web
    from tornado import ioloop
    from tornado.httpserver import HTTPServer # 非阻塞服务器
    from tornado.options import define, options define('port', 8080, help='run port', type=int) # 自定义类型 class Index(web.RequestHandler):
    def get(self):
    self.render('first.html') class TempHandle(web.RequestHandler):
    def get(self):
    self.redirect('https://www.baidu.com/') application = web.Application(
    handlers=[
    ('/', Index),
    ('/temp', TempHandle),
    ],
    debug=True,
    template_path='template',
    ) def main():
    options.parse_command_line() # 打印请求信息
    HttpServer = HTTPServer(application) # 导入非阻塞服务器
    HttpServer.listen(options.port) # 改用服务器进行监听
    ioloop.IOLoop.current().start() # 循环监听 if __name__ == '__main__':
    main()

    tornado渲染模板:在app下定义模板路径

    •  在Appalication里面添加一个参数:template_path='模板文件路径的字符串'
    • 在视图函数中使用self.render方法渲染模板。render接受一个template_path的html文件的相对路径的字符串
  • 页面重定向,self.redirect,redirect里面接收一个需要跳转的url

  获取请求信息:

    • self.request

      • HTTPServerRequest(protocol='http', host='127.0.0.1:8080', method='GET', uri='/', version='HTTP/1.1', remote_ip='127.0.0.1')  //请求头信息
    • self.request + 属性名  (self.request.host,即可拿到host地址)
    • 常用的请求信息:
      • method
      • remote_ip
      • full_url() // 重新构建此请求的完整url
      • requetst_time()  // 请求此请求执行所花费的时间
      • uri  请求的完整uri
      • path  路径的部分uro
      • query  查询部分的uri
      • vsersion   请求中的指定的http版本,例如‘http/1.1’
  • 输入:
    • self.get_argument:获取get请求的对应的key值的value,若无该value,则需指定默认值:   value = self.get_argument(key,default_value),当一个key对应多个value时,该方法只会获取最后一个value
    • self.get_arguments:获取该key对应的所有value,以列表的形式返回。如无value返回,则默认返回空列表
    • 这两个方法适用于get和post
    • get_query_argument(s):只获取get请求的url参数
    • get_body_argument(s):获取post请求的参数
  • url传参:
    • restful风格的URL传参数
    •  from tornado import web
      from tornado import ioloop
      from tornado.httpserver import HTTPServer # 非阻塞服务器
      from tornado.options import define, options define('port', 8080, help='run port', type=int) # 自定义类型 class Index(web.RequestHandler):
      def get(self, name, age):
      self.write('{}{}'.format(name, age)) application = web.Application(
      handlers=[
      ('/(?P<name>.+)/(?P<age>[0-9]+)', Index),
      ],
      debug=True,
      template_path='template',
      ) def main():
      options.parse_command_line() # 打印请求信息
      HttpServer = HTTPServer(application) # 导入非阻塞服务器
      HttpServer.listen(options.port) # 改用服务器进行监听
      ioloop.IOLoop.current().start() # 循环监听 if __name__ == '__main__':
      main()

      在路径里面利用正则表达式对url分组匹配进行命名?P<name>,再在视图函数里将组名传入视图函数的参数,就可以拿到restful风格的url参数了。

tornado--输入和输出的更多相关文章

  1. tornado 01 路由、输入与输出

    tornado 01 路由.输入与输出 一.安装tornado pyvip@Vip:~$ workon py3env #安装python3的虚拟环境 (py3env) pyvip@Vip:~$ pip ...

  2. 了解一下C++输入和输出的概念

    我们经常用到的输入和输出,都是以终端为对象的,即从键盘输入数据,运行结果输出到显示器屏幕上.从操作系统的角度看,每一个与主机相连的输入输出设备都被看作一个文件.除了以终端为对象进行输入和输出外,还经常 ...

  3. [总结] I/O输入,输出

    I/O输入,输出第一:先判断到底是输入还是输出,站在程序的立场第二:判断是传递字节,还是字符,决定管道粗细,字节流是最基本的数据输出管道.字符类型管道专门用来传送文本数据.Java流的四大父类:1.字 ...

  4. C#语言基础— 输入与输出

    C#语言基础— 输入与输出 1.1函数的四要素:名称.输入.输出.加工 1.2主函数:输出语句.输入语句: Static viod Main(string[] stgs)//下划线部分可以自己指定 { ...

  5. Shell编程基础教程3--Shell输入与输出

    3.Shell输入与输出    3.1.echo        echo命令可以显示文本行或变量,或者把字符串输出到文件        echo [option] string             ...

  6. 不可或缺 Windows Native (4) - C 语言: 预处理命令,输入,输出

    [源码下载] 不可或缺 Windows Native (4) - C 语言: 预处理命令,输入,输出 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 预处理命令 输入 ...

  7. 输入和输出的总结(c语言)

    c语言中有多种的输入和输出方式,下面就简单总结一下: 一.输入的三种方式 (1)scanf scanf 函数可以在变量中使用,也可以在数组中使用,当然指针上也能用到,是一个很好的输入函数.scanf是 ...

  8. C++——输入、输出和文件

    一.C++输入和输出概述 1.1.流和缓冲区 C++程序把输入和输出看作字节流.输入时,程序从输入流中抽取字节:输出时,程序将字节插入到输出流中.对于面相文本的程序,每个字节代表一个字符,更通俗地说, ...

  9. C++学习42 输入和输出的概念

    我们经常用到的输入和输出,都是以终端为对象的,即从键盘输入数据,运行结果输出到显示器屏幕上.从操作系统的角度看,每一个与主机相连的输入输出设备都被看作一个文件.除了以终端为对象进行输入和输出外,还经常 ...

  10. C++:文件的输入和输出

    1.共同的打开文件方式: fin.open("test.txt",ios::binary) fout.open("test.txt",ios::binary) ...

随机推荐

  1. 二叉树的简单操作(Binary Tree)

    树形结构应该是贯穿整个数据结构的一个比较重要的一种结构,它的重要性不言而喻! 讲到树!一般都是讨论二叉树,而关于二叉树的定义以及概念这里不做陈诉,可自行搜索. 在C语言里面需要实现一个二叉树,我们需要 ...

  2. 使用Selenium IDE和webDriver进行自动化软件测试

    1.Selenium IDE 在Chrome浏览器上登录谷歌应用商店可以安装Selenium IDE插件(3.0以上版本的Selenium IDE不支持录制的脚本导出,所以这里使用到的是应用商店上的另 ...

  3. 20145338 《网络对抗》 MSF基础应用

    20145338<网络对抗> MSF基础应用 实验内容 ·掌握metasploit的基本应用方式,掌握常用的三种攻击方式的思路. 具体需要完成(1)一个主动攻击;(2)一个针对浏览器的攻击 ...

  4. Hello vue.js的随笔记录

    数据双向绑定的script在组件定义位置后面才顶用. 使用它的话,引用js就好,比较简单. 声明一个vm对象,new Vue({}).这个构造里传一个对象,包含el:界面元素,data:数据,meth ...

  5. COPD——团队项目测试心得

    写在前面: 测试结束了,也要和项目说拜拜了~这一学期时间飞快,痛并快乐着,想想人生如果是个软件,那我们用多长时间在做测试呢?恐怕是一辈子.很多人忙着追逐,却很少人能停下来审视自己,那些时常自省的,常能 ...

  6. 解决spring3升级到spring4后jackjson报错

    1.这里说的是基于spring+springmvc+hibernate框架(其实跟持久层框架也没关系) 2.首先是springmvc的配置,处理json数据都会用到的.第5行是spring-4.x的写 ...

  7. java 两行代码解析json文件

    public void JsonRead() throws IOException{ String str = FileUtils.readFileToString(new File("D: ...

  8. Oracle学习DayThree

    一.视图 1.定义: 视图是一种虚表,是从表中抽出的逻辑上相关的数据集合. 视图建立在已有表的基础上, 视图赖以建立的这些表称为基表. 向视图提供数据内容的语句为 SELECT 语句, 可以将视图理解 ...

  9. day02 while循环 运算符 格式化输出 编码

     今日主要内容 while循环:判断条件是否成立. 如果成立执行循环体.然后再次判断条件,.....直到条件不成立的时候跳出循环 语法: while 条件: 循环体 else: 当条件不成立的时候执行 ...

  10. Qt 文件的操作

    文件操作是应用程序必不可少的部分.Qt 作为一个通用开发库,提供了跨平台的文件操作能力.从本章开始,我们来了解下 Qt 的文件以及输入输出的功能,也就是 I/O 系统. Qt 通过QIODevice提 ...