使用 TurboGears 和 Python 开发 Web 站点
2007-03-30 12:27:33 来源:WEB开发网核心提示: 图 3 给出了产品显示页面:图 3. 产品显示页面错误处理控制器方法尚未考虑的一件事是 SQLObject 的 get 方法所抛出的 SQLObjectNotFound 异常,清单 16 给出了捕获这个异常并将其作为 NotFound 异常重新抛出的方法,使用 TurboGears 和 P
图 3 给出了产品显示页面:
图 3. 产品显示页面
错误处理
控制器方法尚未考虑的一件事是 SQLObject 的 get 方法所抛出的 SQLObjectNotFound 异常。清单 16 给出了捕获这个异常并将其作为 NotFound 异常重新抛出的方法,这会发送一个基本的 HTTP 404 错误:
清单 16. 向 Controller 类添加的错误处理
from model import Category, Product
from sqlobject import SQLObjectNotFound
from cherrypy import NotFound
from turbogears import controllers, expose, url
class Root(controllers.Root):
@expose("tgcommerce.templates.category")
def category(self, categoryID):
try:
category = Category.get(categoryID)
except SQLObjectNotFound:
raise NotFound()
return dict(category=category)
@expose("tgcommerce.templates.product")
def product(self, productID):
try:
product = Product.get(productID)
except SQLObjectNotFound:
raise NotFound()
return dict(product=product)
处理找不到对象的错误的另外一个策略不是发送 404 错误,而是对其进行重定向。这是使用 turbogears.redirect(...) 方法实现的:
清单 17. 重定向的例子
from turbogears import redirect
try:
object = ClassName.get(objectID)
except SQLObjectNotFound:
raise redirect("/path_to_redirect")
Tags:使用 TurboGears Python
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接