输出
在tornado里面如果要在浏览器输出内容,那么我们就需要用到write方法。
它可接收的类型有三种:unicode字符串,dict字典与bytes字节
除此之外我们还可以直接把json字符串写到浏览器当中
self.write()
把传入的参数写入到浏览器
self.flush()
执行flush时会把已经write的内容先刷新到浏览器
self.finish()
结束操作,后面的内容会被执行但是不会被显示
self.render()
传入一个页面,会返回页面内容
self.redirect()
传入一个路由,实现路由的跳转
import json
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write('hello') # 字符串
self.write(<br />)
self.write(b'hello') # bytes
# 当write传输字典的时候,整个字符串都按照json字符串处理,有些格式并不会被浏览器解析(例如<br />)
# 此时应该先调用flush方法,之后再把字典写入
self.flush()
di = {
'name': 'xiaoming'
}
self.write(di)
li = ['a', 'b']
self.write(json.dumps(li)) # json字符串
# flush
self.flush() # 刷新
self.finish() # 结束
self.render('in_out.html') # 可以返回一个HTML页面
self.redirect('/') # 路由跳转
获取请求信息
当我们开启tornado服务时,如果想知道是谁在访问我们,可以调用self.request来查看请求信息
method | HTTP请求方法,例如 GET 或 POST |
---|---|
remote_ip | 客户端的IP地址,返回值类型为字符串 |
full_url() | 重新构建此请求的完整UR |
request_time() | 返回此请求执行所花费的时间 |
uri | 请求的完整uri |
path | 路径部分的uri |
query | 查询部分的uri |
version | 请求中指定的HTTP版本,例如"HTTP /1.1" |
self.request # 获取一个请求对象
self.request.remote_ip # 获取这个对象里面的ip属性
输入
self.get_argument('name', '')
获取请求参数数据,第一个参数为参数名,第二个参数指定默认值。相同参数名只能获取最后一个参数
self.get_arguments('name')
获取请求参数数据,以列表的形式存储。可获取多个相同参数名的值
self.get_query_argument()
self.get_query_arguments()
获取get请求里面url传参的数据
self.get_body_argument()
self.get_body_arguments()
获取post请求里面body的数据
class MainHandler(tornado.web.RequestHandler):
def get(self): # 获取URL数据
name = self.get_argument('name', 'no')
self.write(name)
self.write('<br />')
name = self.get_arguments('name')
self.write('<br />'.join(name))
def post(self): # 获取body数据
name = self.get_argument('name', 'no')
password = self.get_argument('password', 'none')
self.write('user: %s <br /> password: %s' % (name, password))
class IndexHandler(tornado.web.RequestHandler):
def get(self): # 获取URL数据
name = self.get_query_argument('name', '')
self.write(name)
self.write('<br />')
name = self.get_query_arguments('name')
self.write('<br />'.join(name))
def post(self): # 获取body数据
name = self.get_body_argument('name', '')
password = self.get_body_argument('password', '')
self.write('user: %s <br /> password: %s' % (name, password))
URL传参
查询字符串风格
class MainHandler(tornado.web.RequestHandler):
def get(self):
name = self.get_argument('name', '')
- 路由
Application([
(r'/', MainHandler),
])
- URL
REST风格
class MainHandler(tornado.web.RequestHandler):
def get(self, name, age):
self.write('name: %s <br /> age: %s' % (name, age))
- 路由
Application([
(r'/(.+)/([0-9]+)', MainHandler),
# (r'/(?P<name>.+)/(?P<age>[0-9]+)', MainHandler),
])
- URL
网友评论