tornado当用户输入的URL无效时转入设定的页面
2024-10-14 22:26:29
今天做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
最新文章
- Quartz作业调度框架及时间表达式的含义和语法
- php地址赋值值和传值赋值
- 视图(View) – ASP.NET MVC 4 系列
- 在XML drawable中引用自定义颜色
- 【Linux】将Oracle安装目录从根目录下迁移到逻辑卷
- 用linqPad帮助你快速学习LINQ
- CSS3_实现圆角效果box-shadow
- Java 中Comparator 的使用,实现集合排序
- android 输入法出现挤压屏幕、android输入键盘覆盖了屏幕控件的解决办法
- MVC身份验证及权限管理
- 解决Chrome无法加载Shockwave Flash
- 编写生成彩色验证码的Servlet
- Tips_of_JS 之 利用JS实现水仙花数的寻找与实现斐波那契数列
- ssh框架知识点回顾
- 前端面试题(5) 列举5种IE haslayout的属性及其值
- UNIX环境高级编程——线程与进程区别
- Round#534 div.2-C Grid game
- c#项目减少源代码大小
- 对package.json的理解和学习
- Egret的屏幕适配模式图示
热门文章
- BZOJ 1818 内部白点(离散化+树状数组)
- BZOJ 1037 生日聚会(神DP)
- hdu 1528 Card Game Cheater (二分匹配)
- JS内存空间详细图解
- bzoj1706: [Usaco2007 Nov]relays 奶牛接力跑 (Floyd+新姿势)
- bzoj3224: Tyvj 1728 普通平衡树(打个splay暖暖手)
- django-jet 中文文档
- Python Pandas与Numpy中axis参数的二义性
- AIM Tech Round (Div. 2) B
- ZOJ1586:QS Network (最小生成树)