请求与相应

 请求头与响应头

 

 

 请求头

响应头

 

 

设置响应头

set_header/add_header/clear_header

class MainHandler(RequestHandler):
    def get(self):
        self.write('life is short you need python')
        self.set_header('name','taka') #设置响应头
        self.set_header('name','goolu') #存在两个相同的同名的key时,set_header会覆盖
        self.set_header('age','1111')
        #set_header可以设置多个,如果有相同名字响应头会覆盖

class AddHandler(RequestHandler):
    def get(self):
        self.write('life is short you need python')
        self.add_header('name','taka') #添加响应头
        self.add_header('name','taka') #添加响应头
        self.add_header('name','taka') #添加响应头
        self.add_header('age','111') #添加响应头
        #add_header可以同时存在多个相同key
        self.clear_header('age')  #清除指定key的响应头
        self.clear_header('name') #如果相同key的响应头全部清除

application = tornado.web.Application(
    handlers=[
        (r'/', MainHandler),  
        (r'/add', AddHandler),
    ],
    template_path = 'templates', #指定静态模板的文件夹
    debug=True  #方便调试
) 

 设置状态码

send_error:

发送错误码到浏览器,指定HTTP错误码发送到浏览器

如果已经执行了flush ,则不能再执行send_error,因此该方法将简单的终止响应

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

write_error:

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

未定义路由的处理

class SendHandler(RequestHandler):
    def get(self):
        self.write('hello world') #200 OK
        # self.flush()  #刷新后面的错误码不显示
        self.send_error(404) #发送错误码,可以主动去报错  404:Not Found
        # print('hello')

    def write_error(self, status_code, **kwargs): #重写write_error方法,自定义报错页面
       # self.write('aaa %s'%status_code)
     self.render('error_notfound.html')
class NotHandler(RequestHandler): def get(self,*args,**kwargs): self.write('not haha') self.set_status(404,'error!!!') #设置状态码 print(args) application = tornado.web.Application( handlers=[ (r'/send', SendHandler), (r'/(.*)', NotHandler), # ], template_path = 'templates', #指定静态模板的文件夹 debug=True #方便调试 )

请求处理流程

调用顺序:

Tornado 在接受到请求之后,后按照此顺序选择响应的方法来执行

class IndexHandler(RequestHandler):
        '''
        客户端发请求过来,我们发响应回去,中间有一定的过程
        '''
        def set_default_headers(self):
            '''设置默认响应头'''
            print('-------set_default_headers---:设置headers')
        def initialize(self):
            print('----initialize-------:初始化')
        def prepare(self):
            print('------prepare----:准备工作')

        def get(self):
            self.write('hjjjjj <br/>eeeeee')
        def post(self):
            pass
        def write_error(self, status_code, **kwargs):
            print('----write_error--------:错误处理')
        def on_finish(self):
            '''结束工作'''
            print('-----on_finish-----:结束并释放资源')
application = tornado.web.Application(
    handlers=[
        (r'/index', IndexHandler),
    ],
    template_path = 'templates', #指定静态模板的文件夹
    debug=True  #方便调试
) 

运行结果日志:

 

posted on 2019-03-30 11:43  透过代码看世界  阅读(115)  评论(0编辑  收藏  举报

导航