tornado框架基础02-输入和输出
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-输入和输出的更多相关文章
- tornado 01 路由、输入与输出
tornado 01 路由.输入与输出 一.安装tornado pyvip@Vip:~$ workon py3env #安装python3的虚拟环境 (py3env) pyvip@Vip:~$ pip ...
- Python基础篇--输入与输出
站长资讯平台:Python基础篇--输入与输出在任何语言中,输入和输出都是代码最基础的开始,so,先来聊一聊输入和输出输出输入END在任何语言中,输入和输出都是代码最基础的开始,so,先来聊一聊输入和 ...
- tornado框架基础01-路由简介
tornado 小而精 Django 大而全 Web框架 Tornado是一个由Python开发的Web框架 Web服务 利用Tornado,可以快速搭建和一个高性能的Web服务 非阻塞 Tornad ...
- tornado框架基础10-websocket
websocket 01 长轮询 在网页,我们经常扫码登录,结合之前的学习的知识点,来思考下,前端是如何知道用户在手机上扫码登录了呢? 长轮询:客户端不断的向服务器发送请求 缺点: \1. 开销大 \ ...
- tornado框架基础11-tornado异步
01 同步和异步 生活中常常会遇到在超市排队买东西的情况,排在你前面的人没有结算完成,你就无法付账,在计算机中也有类似的情形,一个程序在执行之前,需要等待其他的程序执行完成,大家还能举出其他的例子吗? ...
- tornado框架基础09-cookie和session
01 cookie 在上节,我们简单了解了登录过程,但是很明显,每次都需要登录,但是在平常逛网站的只需要登录一次,那么网站是如何记录登录信息的呢? 有没有什么办法可以让浏览器记住登录信息,下次再次打开 ...
- tornado框架基础03-请求与响应
01 请求与响应 请求 浏览器在发送请求的时候,会发送具体的请求信息,由请求行,请求消息头,请求正文 请求消息头 向服务器传递附加信息 Accept: 浏览器可以接受的MIME类型. Accept-C ...
- Python学习--02输入和输出
命令行输入 x = input("Please input x:") y = raw_input("Please input x:") 使用input和raw_ ...
- Python学习--02输入和输出、运算符
命令行输入 x = input("Please input x:") y = raw_input("Please input x:") 使用input和raw_ ...
随机推荐
- RHEL6.5---LVS(IP-TUN)
实验环境: 主机名 IP 所需软件 master eth0==>192.168.30.160(RIP) eth0:1==>192.168.30.130(VIP) ipvsadm node ...
- [转]ASP.NET MVC Bootstrap极速开发框架
本文转自:http://www.cnblogs.com/smartbooks/p/3814927.html 前言 每次新开发项目都要从头开始设计?有木有一个通用的快速开发框架?并且得是ASP.NET ...
- [转]List of Visual Studio Project Type GUIDs
本文转自:http://www.codeproject.com/Reference/720512/List-of-Visual-Studio-Project-Type-GUIDs There isn' ...
- Java 设置Word页面背景色
Word中可以针对不同文档排版设计要求来设置背景设置颜色.常见的可设置单一颜色.渐变色或加载指定图片来设置成背景.下面通过Java来设置以上3种Word页面背景色. 使用工具:Spire.Doc fo ...
- return false 的其中一种用法
return false 的具体是做什么的在这里就不多说了,因为我觉得我形容不明白.....避免大家弄混乱,就不给大家添麻烦了~~ 直接上例子: 1.先看看下面一段代码,指出其中的错误所在: //点击 ...
- H+后台主题UI框架---整理(三)
这里面介绍下H+后台主题UI框架里面插件的应用,不过都是最最简单最初级的功能.主要有日历插件,input单选多选(icheck)插件,input下拉搜索(chosen)插件. 一.日历插件 有如下几种 ...
- 将vue-cli项目配置在nginx上
登录使用的是node.js搭建的注册登录接口,关于对数据库的读写则是用spring boot的框架来实现的. 1.首先是vue-cli项目里的前端页面的配置: location / { root ...
- (4)《Head First HTML与CSS》学习笔记---文本的CSS规则和盒模型;div与span;<a>元素的链接色;伪类
1.每个font-family包含一组共同特征的字体.共五个字体系列: sans-serif----这个系列包括了没有衬线的字体,与serif相比,通常认为这个系列更容易在计算机上识读. serif- ...
- 在windows上安装Jenkins---tomcat流
在windows上安装Jenkins有两种方式: (1)jar流 在命令行中运行:java -jar jenkins.war 浏览器访问 localhost:8080,创建初始管理员帐号即可. (2) ...
- 洛谷 P1021 邮票面值设计
题目描述 给定一个信封,最多只允许粘贴N张邮票,计算在给定K(N+K≤15)种邮票的情况下(假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大值MAX,使在1-MAX之间的每一个邮资值都能得到 ...