WEB开发网
开发学院软件开发Python 使用 TurboGears 和 Python 开发 Web 站点 阅读

使用 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")

上一页  5 6 7 8 9 10 

Tags:使用 TurboGears Python

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接