01 输出

write

bytes类型

class IndexHandler(tornado.web.RequestHandler):

def get(self):

self.write(b'Tornado ')

字典类型

user = {

'name': 'budong',

'age': 18

}

  self.write(user)

当传字典进去 不解析了.因为遇到json类型数据将所有内容全部转成json字符串格式,导致换行符不解析.

unicode

self.write('Tornado ')

其他

li = [1, 2, 3, 4]

import json

li = json.dumps(li)

self.write(li)

print(repr(li))

li = json.loads(li)

print(repr(li))

接受对象

write可以接受 bytes、unicode字符和字典这个三个对象.

如果接受的是字典,会把字典转化成 JSON 字符串,因此write也可以接受 JSON 字符串

python2中首行加# -*-coding:UTF-8 -*- 说明编码格式,

flush

self.flush()

time.sleep(3)

self.write('Tornado ')

缓冲区

write 会先把内容放在缓冲区,正常情况下,当请求处理完成的时候会自动把缓冲区的内容输出到浏览器,但是可以调用 flush 方法,这样可以直接把缓冲区的内容输出到浏览器,不用等待请求处理完成 :

render:

返回 HTML

class TemHandler(tornado.web.RequestHandler):

def get(self):

self.render('01in_out.html')

通过  render  可以返回一个 html 文件

Application中的设置:

template_path='templates',

想要 Tornado 能够正确的找到 html 文件,需要在 Application 中指定文件的位置

redirect

跳转路由

class RecHandler(tornado.web.RequestHandler):

def get(self):

import time

time.sleep(3)

self.redirect(r'/tem')

通过  redirect 可以跳转到指定的路由

路由

(r'/rec', RecHandler),

finish

结束请求

self.finish()

self.write('finish')

finishi后面的代码会执行,但不会显示到浏览器.

当调用 finish 之后,请求处理完成,类似于函数中的 return (注意:请求当中不能出现return) ,其后不能再执行 write ,否则会报错.

02 获取请求信息

self.request

handler

class ReqHandler(tornado.web.RequestHandler):

def get(self):

self.write(self.request.remote_ip)

print(self.request.remote_ip)

print(self.request.full_url())

print(self.request.request_time())

继承类 tornado.web.RequestHandler 之后 ,可以直接调用 self.request 来获取客户端请求信息

method HTTP请求方法,例如 GET 或 POST
remote_ip 客户端的IP地址,返回值类型为字符串
full_url() 重新构建此请求的完整URL
request_time() 返回此请求执行所花费的时间
uri 请求的完整uri
path 路径部分的uri
query 查询部分的uri
version 请求中指定的HTTP版本,例如“HTTP / 1.1”

application设置debug=True,自动重启修改.

03 输入

添加标题

class GetHandler(tornado.web.RequestHandler):

def get(self):

name = self.get_argument('name', 'no')

self.write(name)

self.write(' ')

name = self.get_arguments('name')

self.write(' '.join(name))

   #get_arguments把传的所有参数全都传到列表里,get_argument只存最后一个.get_argument底层调用get_arguments,取最后一个值

获取表单数据.

def post(self, *args, **kwargs):

name = self.get_argument('name', 'no')

passwd = self.get_argument('password', 'none')

self.write('user: %s password: %s' % (name, passwd))

获取 URL 数据

get_argument可以获取 URL (查询字符串)中的参数

获取 body 数据

get_argument可以获取 body (请求体)中的数据,get_argument返回的值始终是unicode

get_query_argument #查询字符串中的参数

self.get_query_argument('name', 'query')

获取查询字符串中参数,对应的也有:get_query_arguments

get_body_argument #获取表单的body

self.get_body_argument('name', 'body')

获取 body 中的参数,对应的也有: get_body_arguments

04 url传参

查询字符串风格

class GetHandler(tornado.web.RequestHandler):

def get(self):

name = self.get_argument('name', 'no')

路由 (r'/get', GetHandler) URL http://127.0.0.1:8000/get?name=budong

REST风格

class UserHandler(tornado.web.RequestHandler):

def get(self, name, age):

self.write('name: %s age: %s' % (name, age))

class StudentHandler(tornado.web.RequestHandler):

def get(self, name, number):

self.write('name: %s number: %s' % (name, number))

路由

(r'/user/(.+)/([0-9]+)', UserHandler), #参数必须按照顺序

(r'/stu/(?P<number>[0-9]+)/(?P<name>.+)', StudentHandler), #?P加了标签

URL

http://127.0.0.1:8000/user/budong/18

http://127.0.0.1:8000/stu/20170001/budong

查询字符串

查询字符串通过在路由后面添加 ? 在加上参数名和参数值来传入参数

REST

通过 / 来分割每个参数,关键在于 get 方法定义

驼峰命名法

大驼峰:MainHandler 类

小驼峰:mainHandler

下划线:main_handler python规范

正式代码与导包空1行

类代码与正式代码之间空2行

最外面的函数和代码之间空2行

tornado框架基础02-输入和输出的更多相关文章

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

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

  2. Python基础篇--输入与输出

    站长资讯平台:Python基础篇--输入与输出在任何语言中,输入和输出都是代码最基础的开始,so,先来聊一聊输入和输出输出输入END在任何语言中,输入和输出都是代码最基础的开始,so,先来聊一聊输入和 ...

  3. tornado框架基础01-路由简介

    tornado 小而精 Django 大而全 Web框架 Tornado是一个由Python开发的Web框架 Web服务 利用Tornado,可以快速搭建和一个高性能的Web服务 非阻塞 Tornad ...

  4. tornado框架基础10-websocket

    websocket 01 长轮询 在网页,我们经常扫码登录,结合之前的学习的知识点,来思考下,前端是如何知道用户在手机上扫码登录了呢? 长轮询:客户端不断的向服务器发送请求 缺点: \1. 开销大 \ ...

  5. tornado框架基础11-tornado异步

    01 同步和异步 生活中常常会遇到在超市排队买东西的情况,排在你前面的人没有结算完成,你就无法付账,在计算机中也有类似的情形,一个程序在执行之前,需要等待其他的程序执行完成,大家还能举出其他的例子吗? ...

  6. tornado框架基础09-cookie和session

    01 cookie 在上节,我们简单了解了登录过程,但是很明显,每次都需要登录,但是在平常逛网站的只需要登录一次,那么网站是如何记录登录信息的呢? 有没有什么办法可以让浏览器记住登录信息,下次再次打开 ...

  7. tornado框架基础03-请求与响应

    01 请求与响应 请求 浏览器在发送请求的时候,会发送具体的请求信息,由请求行,请求消息头,请求正文 请求消息头 向服务器传递附加信息 Accept: 浏览器可以接受的MIME类型. Accept-C ...

  8. Python学习--02输入和输出

    命令行输入 x = input("Please input x:") y = raw_input("Please input x:") 使用input和raw_ ...

  9. Python学习--02输入和输出、运算符

    命令行输入 x = input("Please input x:") y = raw_input("Please input x:") 使用input和raw_ ...

随机推荐

  1. noi.ac 邀请赛1 By cellur925

    A. array 考场:上来就想暴力,首先第一个子任务肯定没问题,怎么搞都行.然后第二个子任务用个数组记下新修的值就行了.第三个子任务用一下等差数列求和公式帮助求解,每次都重新算(因为每次改变全部元素 ...

  2. selenium之webdriverAPI接口详解

    1. 浏览器操作 driver.maximize_window() #最大化窗口driver.execute_script('window.scrollTo(0,0);') #滚动窗口到最上面driv ...

  3. python之os、sys和random模块

    import os # print(os.getcwd())#获取当前目录,绝对路径# print(os.chdir('../'))#更改当前目录,../的意思是退回上一级目录# print(os.g ...

  4. Codeforces Round #544 (Div. 3) C. Balanced Team

    链接:https://codeforces.com/contest/1133/problem/C 题意: 给n个数, 在这n个数中选最多n个数,来组成一个队伍. 保证这n个数的最大最小差值不大于5. ...

  5. sql 语句操作,修改字段中字符串的一部分

    update 表名 set 字段=replace(字段,‘替换的部分’,‘替换后的字符串’): update 表名 set A=replace( A, '海淀', '朝阳') where A like ...

  6. Clone a Pluggable Database – 12c Edition

    1. 1.Tnsnames when connecting to either Container or Pluggable instance The tnsnames.ora should be c ...

  7. [已读]编写高质量代码 改善JavaScript程序的188个建议

    吐槽一万遍,买的最后悔的一本,没有之一,大量篇幅抄袭<高性能javascript>,我记得还有部分抄袭<javascript精粹>,<javascript模式>有没 ...

  8. Backbone学习记录(1)

    去年买的<基于MVC的javascript Web富应用开发>,拖到现在还没看完,作者介绍了三个MVC框架,Spine ,backbone和javascriptMVC.1和2在国内的流行度 ...

  9. qconbeijing2014

    http://2014.qconbeijing.com/videoslides.html   周一 周二 周三 周四 周五 周六 2014年5月19日 Deep Dive into Amazon's ...

  10. oracle 数据导入、导出

    导入导出 --数据导出备份和导入 ------注意 导出和导入 必须是CMD 命令行下操作,而不是SQL编辑器中 --1.导出表 . --exp:导出关键字 ,userid:用户权限 ,file:保存 ...