tornado--输入和输出
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') //请求头信息
- 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.request
- 输入:
- 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--输入和输出的更多相关文章
- tornado 01 路由、输入与输出
tornado 01 路由.输入与输出 一.安装tornado pyvip@Vip:~$ workon py3env #安装python3的虚拟环境 (py3env) pyvip@Vip:~$ pip ...
- 了解一下C++输入和输出的概念
我们经常用到的输入和输出,都是以终端为对象的,即从键盘输入数据,运行结果输出到显示器屏幕上.从操作系统的角度看,每一个与主机相连的输入输出设备都被看作一个文件.除了以终端为对象进行输入和输出外,还经常 ...
- [总结] I/O输入,输出
I/O输入,输出第一:先判断到底是输入还是输出,站在程序的立场第二:判断是传递字节,还是字符,决定管道粗细,字节流是最基本的数据输出管道.字符类型管道专门用来传送文本数据.Java流的四大父类:1.字 ...
- C#语言基础— 输入与输出
C#语言基础— 输入与输出 1.1函数的四要素:名称.输入.输出.加工 1.2主函数:输出语句.输入语句: Static viod Main(string[] stgs)//下划线部分可以自己指定 { ...
- Shell编程基础教程3--Shell输入与输出
3.Shell输入与输出 3.1.echo echo命令可以显示文本行或变量,或者把字符串输出到文件 echo [option] string ...
- 不可或缺 Windows Native (4) - C 语言: 预处理命令,输入,输出
[源码下载] 不可或缺 Windows Native (4) - C 语言: 预处理命令,输入,输出 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 预处理命令 输入 ...
- 输入和输出的总结(c语言)
c语言中有多种的输入和输出方式,下面就简单总结一下: 一.输入的三种方式 (1)scanf scanf 函数可以在变量中使用,也可以在数组中使用,当然指针上也能用到,是一个很好的输入函数.scanf是 ...
- C++——输入、输出和文件
一.C++输入和输出概述 1.1.流和缓冲区 C++程序把输入和输出看作字节流.输入时,程序从输入流中抽取字节:输出时,程序将字节插入到输出流中.对于面相文本的程序,每个字节代表一个字符,更通俗地说, ...
- C++学习42 输入和输出的概念
我们经常用到的输入和输出,都是以终端为对象的,即从键盘输入数据,运行结果输出到显示器屏幕上.从操作系统的角度看,每一个与主机相连的输入输出设备都被看作一个文件.除了以终端为对象进行输入和输出外,还经常 ...
- C++:文件的输入和输出
1.共同的打开文件方式: fin.open("test.txt",ios::binary) fout.open("test.txt",ios::binary) ...
随机推荐
- HFun.快速开发平台(一)=》简述
[——使用成熟的技术实现了解的业务,关注面向对象,关注业务领域] 偶然的机会又回到了园子,看到上次的文章已是N年前,洽巧近期正在开发一个小程序,标题定为“快速开发平台”有点夸张,算是给自己定个小目标. ...
- 004dayPython学习输入并输出用户名和密码
在python 2.7中,捕获用户输入用raw_input 一.捕获并打印用户名和密码 要求: 输入用户名和密码都可见 # -*- coding:utf-8 -*-userName = raw_inp ...
- 反射 day1
1.Object objval = rs.getObject(fieldName);//如果数据库值为空时的返回值java中的null //这个如果是oracle数值型的数据的会返回的可能类型有很多, ...
- AutoCAD 2019.0.1 Update 官方简体中文版
欧特克三维机械设计软件AutoCAD 2019版本于2018年3月23号全球正式发布,新版本图标全新设计,视觉效果更清晰:在功能方面,全新的共享视图功能.DWG文件比较功能:现在打开及保存图形文件已经 ...
- 初读"Thinking in Java"读书笔记之第四章 ---控制执行流程
true和false Java不允许将数字作为布尔值使用. 所有条件表达式都将布尔值作为判断条件,决定执行路径. if-lese 迭代 while,do-while,for为三个迭代语句. ,逗号操作 ...
- 第一次作业_ChenHong1998
我的目标 学习到软件工程的实践过程 回想一下你初入大学时对软件工程专业的畅想 当初你是如何做出选择软件工程专业的决定的? 计算机是热门专业,软件工程专业好找工作 你认为过去两年中接触到的课程是否符合你 ...
- Protege4.3 添加Rules 栏
SWRL rules can be edited in Protégé 4, but not with a nice interface like in Protégé 3. If you go to ...
- vue-router 重难点总结笔记
1,使用动态路由配置的(如:‘:id’),可以在this.$router.params.id获得. 官网例子: 模式 匹配路径 $route.params /user/:username /user/ ...
- 第一条python语句!
- VS2017 nlog源码查看报错
最近下载nlog的源码学习,打开解决方案以后无法编译. C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Sd ...