当前位置: 首页 > news >正文

广州网络兼职网站建设/搜索引擎广告案例

广州网络兼职网站建设,搜索引擎广告案例,成都网站制作方案,长沙手机网站开发第三节:Tornado的请求与响应 上节知识点回顾 一、请求与响应 1.1 浏览器与服务器的沟通过程 1.2 请求信息 请求 浏览器在发送请求的时候,会发送具体的请求信息,由请求行,请求消息头,请求正文请求消息头 向…

第三节:Tornado的请求与响应

  • 上节知识点回顾 
    输入输出知识点回顾

一、请求与响应

1.1 浏览器与服务器的沟通过程

浏览器与服务器

1.2 请求信息

  1. 请求 
       浏览器在发送请求的时候,会发送具体的请求信息,由请求行,请求消息头,请求正文
  2. 请求消息头 
       向服务器传递附加信息
消息头含义
Accept浏览器可以接受的MIME类型
Accept-Charset浏览器支持的字符集,如gbk,utf-8
Accept-Encoding浏览器能够解码的数据压缩方式, 如:gzip
Accept-language所希望的语言
Host请求的主机和端口
User-Agent通知服务器,浏览器类型
Content-Length表示请求消息正文的长度
Connection表示是否需要持久连接(Keep-alive)
Cookie这是最重要的请求头信息之一(会话有关)

3. 请求行 
   请求行,位于第一行,包含内容为:

请求行内容含义
Method一般为 GET 或者 POST
Path-to-resource请求的资源的URI
Http/Version-number客户端使用的协议的版本,有HTTP/1.0和HTTP/1.1

4. 请求正文 
   请求具体内容,比如:URL中传入的参数,form表单里面的内容等等

1.3 响应信息

  1. 响应信息 
       响应信息为服务器的处理结果。主要包含:响应行,响应消息头,响应正文
  2. 响应行 
       响应行主要报错如下信息:
报错含义
Http/Version-number服务器用的协议版本
Statuscode响应码。代表服务器处理的结果的一种表示
message响应码描述。例如200的描述为OK
常见响应码含义
200正常
302/307重定向
304服务器的资源没有被修改
404请求的资源不存在
500服务器报错了

3. 响应头

响应头含义
Server通知客户端,服务器的类型
Content-Encoding响应正文的压缩编码方式。常用的是gzip
Content-Length通知客户端响应正文的数据大小
Content-Type通知客户端响应正文的MIME类型
Content-Disposition通知客户端,以下载的方式打开资源

4. 响应正文 
    具体的响应内容,如html,JavaScript 等数据内容

二、设置响应头

2.1 设置给定响应头(set_header)

class SetHandler(tornado.web.RequestHandler):def get(self):self.write('set header')self.set_header('aaa','111')self.set_header('aaa','222')self.set_header('aaa','333')
  •  

set_header

2.2 添加给定响应头(add_header)

class AddHandler(tornado.web.RequestHandler):def get(self):self.write('add header')self.add_header('www','444')self.add_header('www','555')
  •  

add_header

2.3 撤销定响应头(clear_header)

class ClearHandler(tornado.web.RequestHandler):def get(self):self.write('clear header')self.add_header('sss', '8888')self.add_header('qqq', '66666')self.clear_header('qqq')
  •  

clear_header

三、发送错误代码

3.1 发送错误代码到浏览器(send_error)

  send_error 可以将指定的 HTTP 错误码发送到浏览器

class SendHandler(tornado.web.RequestHandler):def get(self):# self.flush()self.send_error(404)
  •  
  • 使用 send_error 时需要注意:如果已经执行了 flush,则不能再执行 send_error,因此该方法将简单地终止响应

  • 如果输出已写入但尚未刷新,则将其丢弃并替换为错误页面 
    send_error

3.2 实现自定义错误页面(write_error)

  send_error 在其底层调用的是write_error;因此只要重写此方法,就可以实现自定义的的错误页面

#自定义错误页面
class SelfHandler(tornado.web.RequestHandler):def write_error(self, status_code, **kwargs):self.write('这是自定义错误页面<br>')self.write('status_code:%s' %status_code)
  •  

自定义错误页面

3.3 未定义路由处理

#未定义路由处理
class NotFoundHandler(tornado.web.RequestHandler):def get(self):self.send_error(404)def write_error(self, status_code, **kwargs):self.render('error.html')
  •  
  • 利用正则设置路由表
(r"/(.*)", NotFoundHandler)
  •  

注:需要把路由放到路由表的最后面 
未定义路由

3.4 路由表

application = tornado.web.Application(handlers = [(r"/",SetHandler ),(r"/add", AddHandler),(r"/cl", ClearHandler),(r"/send", SendHandler),(r"/self", SelfHandler),(r"/(.*)", NotFoundHandler),],template_path='../templates',debug = True
)
  •  

四、Tornado处理请求的过程

  • 调用顺序 
      Tornado 在接受到请求之后,后按照以下顺序选择响应的方法来执行
class IndexHandler(tornado.web.RequestHandler):def set_default_headers(self):print(' ---set_default_headers---:设置header')def initialize(self):print(' ---initialize---:初始化')def prepare(self):print(' ---prepare---:准备工作')def get(self):self.write(' ---get---:处理get请求'+'<br>')def post(self):self.write(' ---post---:处理post请求'+'<br>')def write_error(self, status_code, **kwargs):print(' ---write_error---:处理错误')def on_finish(self):print(' ---on_finish---:结束,释放资源')
  •  

五、本节知识点总结及完整代码

请求与响应知识点总结

  • response.py文件
import time
import tornado.ioloop
import tornado.web
import tornado.httpserver
import tornado.optionsfrom tornado.options import  define, optionsdefine('port', default=8000, help='run port',type=int )
define('version', default='0.0.0.1', help='version', type=str)class SetHandler(tornado.web.RequestHandler):def get(self):self.render('error.html')self.write('set header')self.set_header('aaa','111')self.set_header('aaa','222')self.set_header('aaa','333')class AddHandler(tornado.web.RequestHandler):def get(self):self.write('add header')self.add_header('www','444')self.add_header('www','555')class ClearHandler(tornado.web.RequestHandler):def get(self):self.write('clear header')self.add_header('sss', '8888')self.add_header('qqq', '66666')self.clear_header('qqq')class SendHandler(tornado.web.RequestHandler):def get(self):# self.flush()self.send_error(404)#自定义错误页面
class SelfHandler(tornado.web.RequestHandler):def write_error(self, status_code, **kwargs):self.write('这是自定义错误页面<br>')self.write('status_code:%s' %status_code)#未定义路由处理
class NotFoundHandler(tornado.web.RequestHandler):def get(self):self.send_error(404)def write_error(self, status_code, **kwargs):self.render('error.html')application = tornado.web.Application(handlers = [(r"/",SetHandler ),(r"/add", AddHandler),(r"/cl", ClearHandler),(r"/send", SendHandler),(r"/self", SelfHandler),(r"/(.*)", NotFoundHandler),],template_path='../templates',debug = True
)if __name__ == '__main__':tornado.options.parse_command_line()   #获取命令行参数print(options.port)print(options.version)http_server = tornado.httpserver.HTTPServer(application)application.listen(options.port)tornado.ioloop.IOLoop.instance().start()
  •  

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34120459/article/details/79406102

个人分类: tornado框架

http://www.jmfq.cn/news/5034475.html

相关文章:

  • 济南企业做网站/成都建设网官网
  • 吉首网站建设/宁波seo关键词排名
  • 杭州网站建设hzfwwl/国内真正的永久免费建站
  • 临沂医院手机网站建设/软文广告100字
  • ps网站交互设计/谷歌首页
  • 宁波做网站制作/如何优化标题关键词
  • 网站如何制作学校的做/福建seo快速排名优化
  • 开发网站如何选需要注意什么问题/360搜索网址是多少
  • 做网站需要交管理费吗/游戏优化大师手机版
  • web前端工程师是做什么的/百度首页关键词优化
  • 潍坊网站建设哪家好/免费建站
  • 怎做卖东西的网站/seo上海优化
  • 网站开发服务费计入哪项费用/军事新闻
  • 什么网站做水果蔬菜批发/最新新闻今天最新新闻
  • 网站建设亿码酷出名5/百度大数据查询平台
  • crm管理系统app/郑州网络seo
  • 中国建设资格注册中心网站/广告推销
  • 中国没公司怎么做网站/2019年 2022疫情爆发
  • 深圳建工是国企还是私企/徐州seo
  • 做透明头像的网站/哪里有学市场营销培训班
  • 北京到安阳多少公里路/苏州seo推广
  • 公司做网站费用会计处理/北京网站外包
  • 做外贸网站的都有哪些类型的公司/seo关键词查询排名软件
  • 长春公司网站建设/网站流量宝
  • 商丘做网站的公司/优化营商环境建议
  • 做网站的基本条件/温州网站建设制作
  • 怎么查网站做404页面没/宁德市医院东侨院区
  • 站长之家的seo综合查询工具/网络营销的概念是什么
  • 王建设医生网站/目前好的推广平台
  • 网站的技术建设/怎么开通网站