• 请求与相应


     请求头与响应头

     

     请求头

    响应头

    设置响应头

    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  #方便调试
    ) 

    运行结果日志:

  • 相关阅读:
    deepin15.11安装Oracle JDK
    API文档-BASE-BASE
    miniui控件的el属性(自动生成的标签)
    miniui从继承看控件处理
    miniui中的继承
    miniui加载(二)
    miniui 加载文件时会做的一些事情
    二、运行盛派的Demo(看下效果)
    一、选择云服务器和测试微信公众号Token
    绘制圆角(2)
  • 原文地址:https://www.cnblogs.com/taoge188/p/10626334.html
Copyright © 2020-2023  润新知