• tornado当用户输入的URL无效时转入设定的页面


    今天做web的测验。。坑爹的要用tornado。。。作为一个比较新的用的人还不多的东东。。。查资料好麻烦。。

    下面是当用户输入非法 url时, 显示一个自定义 404 页面提示用户,其访问的页面不存在。两个html文件就可以自己写了。。。

    简单来说,执行 RequestHandler 的 _execute() 方法(内部依次执行 prepare()、get() 和 finish() 等方法)时,任何未捕捉的错误都会被它的 write_error() 方法捕捉,因此覆盖这个方法即可:

    class RequestHandler(tornado.web.RequestHandler):
        def write_error(self, status_code, **kwargs):
            if status_code == 404:
                self.render('404.html')
            elif status_code == 500:
                self.render('500.html')
            else:
                super(RequestHandler, self).write_error(status_code, **kwargs)
    

      

    由于历史原因,你也可以覆盖 get_error_html() 方法,不过不被推荐。
    此外,你还可能没到 _execute() 方法就出错了。
    例如 initialize() 方法抛出了一个未捕捉的异常,这个异常会被 IOStream 捕捉到,然后直接关闭连接,不能向用户输出任何错误页面。
    再比如没有找到一个能处理该请求的 handler,就会用 tornado.web.ErrorHandler 去处理 404 错误。这种情况可以替换这个类来实现自定义错误页面:

    class PageNotFoundHandler(RequestHandler):
        def get(self):
            raise tornado.web.HTTPError(404)
    
    tornado.web.ErrorHandler = PageNotFoundHandler

    另一种方法就是在 Application 的 handlers 参数的最后,加上一个能捕捉任何 URL 的 handler:

    application = tornado.web.Application([
        # ...
        ('.*', PageNotFoundHandler)
    ])
    

      --引用自   http://www.keakon.net/2012/12/03/Tornado%E4%BD%BF%E7%94%A8%E7%BB%8F%E9%AA%8C

  • 相关阅读:
    UVA 10066 The Twin Towers
    UVA 10192 Vacation
    hdu 5018 Revenge of Fibonacci
    hdu 5108 Alexandra and Prime Numbers
    UVA 10252
    UVA 10405最长公共子序列
    数塔
    hdu 2602
    面向对象(五)
    面向对象(三)
  • 原文地址:https://www.cnblogs.com/xiezhw3/p/3438497.html
Copyright © 2020-2023  润新知