今天做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

最新文章

  1. Quartz作业调度框架及时间表达式的含义和语法
  2. php地址赋值值和传值赋值
  3. 视图(View) – ASP.NET MVC 4 系列
  4. 在XML drawable中引用自定义颜色
  5. 【Linux】将Oracle安装目录从根目录下迁移到逻辑卷
  6. 用linqPad帮助你快速学习LINQ
  7. CSS3_实现圆角效果box-shadow
  8. Java 中Comparator 的使用,实现集合排序
  9. android 输入法出现挤压屏幕、android输入键盘覆盖了屏幕控件的解决办法
  10. MVC身份验证及权限管理
  11. 解决Chrome无法加载Shockwave Flash
  12. 编写生成彩色验证码的Servlet
  13. Tips_of_JS 之 利用JS实现水仙花数的寻找与实现斐波那契数列
  14. ssh框架知识点回顾
  15. 前端面试题(5) 列举5种IE haslayout的属性及其值
  16. UNIX环境高级编程——线程与进程区别
  17. Round#534 div.2-C Grid game
  18. c#项目减少源代码大小
  19. 对package.json的理解和学习
  20. Egret的屏幕适配模式图示

热门文章

  1. BZOJ 1818 内部白点(离散化+树状数组)
  2. BZOJ 1037 生日聚会(神DP)
  3. hdu 1528 Card Game Cheater (二分匹配)
  4. JS内存空间详细图解
  5. bzoj1706: [Usaco2007 Nov]relays 奶牛接力跑 (Floyd+新姿势)
  6. bzoj3224: Tyvj 1728 普通平衡树(打个splay暖暖手)
  7. django-jet 中文文档
  8. Python Pandas与Numpy中axis参数的二义性
  9. AIM Tech Round (Div. 2) B
  10. ZOJ1586:QS Network (最小生成树)