博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
tornado 02 输出、输入和URL传参
阅读量:7219 次
发布时间:2019-06-29

本文共 4722 字,大约阅读时间需要 15 分钟。

tornado 02 输出、输入和URL传参

一、输出

  write输出到页面

#write可以接受的对象#write() 可以接受3种对象:bytes  Unicode字符(二进制字符) 字典#如果接收的是字典,会把字典转化为json字符串,因此write也可以接收json字符串
#flush方法   缓冲区#write会先把内容放到缓冲区,正常情况下,当请求处理完成(也就是整段函数结束后)的时候自动把缓冲区的内容输出到浏览器#但是调用flush方法就可以直接把缓冲区的内容输出到浏览区,不用等待请求处理完成

class IndexHandler(tornado.web.RequestHandler):    def get(self):        self.write('dage') #字符串        self.write('
') self.write(b'xuchengcheng') #二进制 self.write('
') self.flush() #如果有flush,文件就会把内容立即冲刷到浏览器当中去 import time #导入time模块 time.sleep(3) #休息3秒钟后冲刷,后面的内容就会在3S后冲刷出来 di = { 'name':'xuchengcheng', 'age':'27' } self.write(di) #字典,当打印字典时候不会解析上面的br,同时排版改变了 import json li=['xucc',18] #列表原来是不能被解析 li=json.dumps(li) #通过json把li转变为json字符串,然后就可以被解析了 self.write(li)

  输出一个html页面

#template_path='templates' #想要 Tornado 能够正确的找到 html 文件,需要在 Application 中指定文件的位置class TemHandler(tornado.web.RequestHandler):    def get(self):        self.render('lesson2.html') #通过  render  可以返回一个 html 文件
class TemHandler(tornado.web.RequestHandler):    def get(self):        self.render('lesson2.html') #通过render可以返回一个同级目录文件夹下面的html文件application = tornado.web.Application(        handlers=[            (r'/index',IndexHandler),            (r'/tem',TemHandler)        ],        template_path = 'templates' #必须是在同级目录,前面是固定的,后面的是自己定义的文件夹    )

  跳转路由

class RecHandler(tornado.web.RequestHandler):    def get(self):        self.redirect('/index') #打开rec路由会自动跳转到index路由下面application = tornado.web.Application(        handlers=[            (r'/index',IndexHandler),            (r'/tem',TemHandler),            (r'/rec',RecHandler),        ],        template_path = 'templates'     )

  finish

class IndexHandler(tornado.web.RequestHandler):    def get(self):        self.write('dage')         self.write('
') self.write(b'xuchengcheng') self.write('
') self.flush() import time time.sleep(3) # di = { 'name':'xuchengcheng', 'age':'27' } self.write(di) self.finish() #当调用 finish 之后,请求处理完成,类似于函数中的 return (注意:请求当中不能出现return) ,其后不能再执行 write ,否则会报错;但是后面的程序仍然是执行的,只是会报错 import json li=['xucc',18] li=json.dumps(li) self.write(li)

二、 获取请求信息

class ReqHandler(tornado.web.RequestHandler):    def get(self):        self.write(self.request.remote_ip) #获取virtualbox(也就是访问人)的ip地址        print(self.request) #可以获取信息        print(self.request.remote_ip) #客户端的ip地址,返回值类型为字符串        print(self.request.request_time()) #返回此请求执行所花费的时间        print(self.request.full_url()) #重新构建此请求的完整URL        print(self.request.uri) #请求的完整uri        print(self.request.path) #路径部分的uri        print(self.request.query) #查询部分的uri        print(self.request.version) #请求中指定的HTTP版本,例如“HTTP/1.1”

  自动重启服务

application = tornado.web.Application(        handlers=[            (r'/index',IndexHandler),            (r'/tem',TemHandler),            (r'/rec',RecHandler),            (r'/req', ReqHandler),        ],        template_path = 'templates',         debug=True  #自动重启服务(改完代码之后不用重新打开python文件),方便平时调试用的,在工作的时候禁用    )

三、输入

class GetHandler(tornado.web.RequestHandler):    def get(self): #获取url数据        name = self.get_argument('name','no')        self.write(name)        print(name)        name = self.get_arguments('name') #返回值是一个列表        print(name)        print(self.get_query_argument('name','no')) #获取地址栏的参数    def post(self, *args, **kwargs): #获取body数据        name = self.get_argument('name','no')        password = self.get_argument('password','no')        self.write(name)        self.write(password)        print(self.get_body_argument('name','no')) #获取form表单请求的内容,可以用get_arguments代替掉
#任何数据都可以用get_argument来获取到

四、URL传参

#REST风格传参class SubjectHandler(tornado.web.RequestHandler):    def get(self,name,age): #下面的正则按照这里的位置来定义的        self.write('name:%s
age:%s'%(name,age))class UserHandler(tornado.web.RequestHandler): def get(self,age,name): self.write('name:%s
age:%s'%(name,age))application = tornado.web.Application( handlers=[ (r'/index',IndexHandler), (r'/tem',TemHandler), (r'/rec',RecHandler), (r'/req', ReqHandler), (r'/get', GetHandler), (r'/sub/(.+)/([0-9]+)', SubjectHandler), #用正则表达式(元字符+数字) (r'/user/(?P
.+)/(?P
[0-9]+)', UserHandler), #这样就不是按照位置来传参了,而是按照变量名来传参了 ], template_path = 'templates', debug=True )
#查询字符串#查询字符串通过在路由后面添加?再加上参数名和参数值来传入参数 #例子tem?name=xuchengcheng&name=lalala 的形式来传参#REST#通过/来分割每个参数,关键在于get方法定义#还有就是tem?name=xuchengcheng&name=lalala 的形式来传参

 

 

转载于:https://www.cnblogs.com/xuchengcheng1215/p/8948086.html

你可能感兴趣的文章
安卓app中嵌入一个H5页面,当手机系统设置字体变大时,如何使H5页面的字体不会随用户自己调整的系统字体变化而变化?...
查看>>
safari 收藏导出 手机safari 导出
查看>>
Dalvik 虚拟机 jvm 区别
查看>>
hexo从零开始
查看>>
币值转换
查看>>
RabbitMQ(六)远程连接
查看>>
得到ios设备的一些信息
查看>>
【教程】如何修改路由表?
查看>>
云计算与虚拟化之后:网络威胁成新挑战
查看>>
50个Demo展示HTML5无穷的魅力
查看>>
chapter 4:贪心
查看>>
批处理学习笔记
查看>>
Linux挂载磁盘
查看>>
Cyclone II RAM ROM设置
查看>>
Ubuntu下实现伪静态
查看>>
python 二维数组遍历
查看>>
第8周课下作业1(补)
查看>>
阿萨斯
查看>>
service启动和停止,绑定和解除绑定
查看>>
elasticsearch开机启动脚本
查看>>