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('<br>')
self.write(b'xuchengcheng') #二进制
self.write('<br>')
self.flush() #如果有flush,文件就会把内容立即冲刷到浏览器当中去
import time #导入time模块
time.sleep(3) #休息3秒钟后冲刷,后面的内容就会在3S后冲刷出来
di = {
'name':'xuchengcheng',
'age':''
}
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('<br>')
self.write(b'xuchengcheng')
self.write('<br>')
self.flush()
import time
time.sleep(3) #
di = {
'name':'xuchengcheng',
'age':''
}
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<br> age:%s'%(name,age)) class UserHandler(tornado.web.RequestHandler):
def get(self,age,name):
self.write('name:%s<br> 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<name>.+)/(?P<age>[0-9]+)', UserHandler), #这样就不是按照位置来传参了,而是按照变量名来传参了
],
template_path = 'templates',
debug=True
)
#查询字符串
#查询字符串通过在路由后面添加?再加上参数名和参数值来传入参数
#例子tem?name=xuchengcheng&name=lalala 的形式来传参 #REST
#通过/来分割每个参数,关键在于get方法定义
#还有就是tem?name=xuchengcheng&name=lalala 的形式来传参

tornado 02 输出、输入和URL传参的更多相关文章

  1. 02模板渲染和参数(补充:URL传参到视图)

    先抛出代码: @app.route('/') def index(): return render_template('index.html',username ="郑勇") 问题 ...

  2. 点击div 跳转并通过URL传参

    点击div前要先给div绑定要传的参数: //给panel绑定自定义属性,方便在跳转时传带参数,键/值对排列 panel.attr("user_age",user_age); pa ...

  3. 关于url传参中文乱码问题

    之前都一直很不了解中文编码得问题,之前在做项目中没碰到那么头痛的问题.所以一直没有了解中文乱码的问题. 问题描述: 地址: http://localhost:8080/sun-government/c ...

  4. Silverlight项目笔记8:层次布局、客户端读取shp、ExecuteCountAsync、柱状图、url传参

    1.层次布局 由于地图窗口和菜单栏都在一个父容器内,在浏览器缩小到一定程度点击地图弹出infoWindow时,会出现菜单栏遮挡infoWindow中间部分的现象,于是通过设置Canvas.ZIndex ...

  5. 浏览器URL传参最大长度问题

    这几天为解决一个BUG头疼了一段时间,BUG现象如下: 一个选择人员的选择控件,当选择多个人时(50多个的时候),返回没有错误现象,而再一次打开的时候就报404错误.看到这个错误非常纳闷,无法下手,只 ...

  6. 关于微信浏览不能URL传参,URL中的问号被删除

    关于微信浏览不能URL传参,URL中的问号被删除. 尼玛难道没有人遇到过这个问题?看了微信支付SDK3.0的代码,看到urlencode 看到了几次.实际上 在微信浏览器下 header('locat ...

  7. url传参后获取参数

    当我们通过url传参跳转到其他页面,如: http://www.xxx.com/content.html?id=217&name=txf&phone=15829087165 在跳转后的 ...

  8. url传参中文乱码解决

    url传参request.setCharacterEncoding("utf-8");无法解决中文乱码问题 解决方法: 修改tomcat---conf----server.xml文 ...

  9. URL传参时中文参数乱码的解决方法

    URL传参时,中文参数乱码的解决: 今天在工作中遇到了这样的一个问题,在页面之间跳转时,我将中文的参数放入到url中,使用location进行跳转传参,但是发现接收到的参数值是乱码.我的代码是这样写的 ...

随机推荐

  1. java基础之io流总结二:File类基本应用

    File类的概述: File类是对文件系统中文件以及文件夹进行封装的对象,可以通过对象的思想来操作文件和文件夹. File类保存文件或目录的各种元数据信息,包括文件名.文件长度.最后修改时间.是否可读 ...

  2. combogrid change check multiple

    this.SetDict = function (obj, dicType, multiple, Ischeckbox, callback, change) { obj.combogrid({ pan ...

  3. float在内存中的存取方法

    今天做了一些题目,想到float数据如何在内存中的形式.不知道一个浮点数是如何存成32位01字符串的.下面是查找的一些资料. 我们先通过java获取这些数的二进制表示. public class De ...

  4. does not name a type

    一般都与头文件有关 1.缺少using namespaces std: 2.头文件的地方不对. 3.加错了头文件,还会出现内部函数库的报错.有的函数被多个函数库包含

  5. hdu1269 Tarjan强连通分量 模板(转)

    #include<stdio.h> #include<iostream> #include<vector> using namespace std; ; vecto ...

  6. location.reload() 和 location.replace()的区别和应用

    首先介绍两个方法的语法: reload 方法,该方法强迫浏览器刷新当前页面.语法: location.reload([bForceGet]) 参数: bForceGet, 可选参数, 默认为 fals ...

  7. (转)ASP.NET MVC4+EasyUI+EntityFrameWork权限管理系统——数据库的设计(一)

    原文地址:http://www.cnblogs.com/cmsdn/p/3371576.html 快一年没写博客了,这段时间感觉好迷茫,写点博客,记录一下自己的成长过程,希望对大家也有帮助 先上图 一 ...

  8. C# 取得内网IP、外网IP、客户端IP方法

    前言 在 Windows Form Application 里对于取得 IP Address 有内网.外网两种 IP Address ,如果只需要取得内网 IP Address ,可以透过使用 IPH ...

  9. 迷宫救人——DFS小题

    原创 题目大意:人质被困在迷宫之中,要求你寻找一条最短路径快速找到人质. 如图,人质在黄色点2处,营救者在起点红色处,1表示无法通过的障碍点,寻找一条最短路径快速找到人质. 毫无疑问用DFS,遍历4个 ...

  10. Android Service基本知识总结(一)

    一.简介 Service是Android系统的后台服务组件,适用于开发无界面.长时间运行的应用功能Service特点如下: 没有用户界面 不会轻易被Android系统终止 在系统资源恢复后Servic ...