使用 TurboGears 和 Python 开发 Web 站点
2007-03-30 12:27:33 来源:WEB开发网核心提示: 在 TurboGears 中,URL 非常清楚地映射到方法上,使用 TurboGears 和 Python 开发 Web 站点(9),它们都包含在 Root 控制器中,根 URL / 映射为一个名为 index 的特殊方法,它会从数据库中检索出一个产品,并将其传递给 product Kid
在 TurboGears 中,URL 非常清楚地映射到方法上,它们都包含在 Root 控制器中。根 URL / 映射为一个名为 index 的特殊方法。通过向 Root 添加一个名为 category 的方法,它就可以通过 URL /category 进行访问了。任何提交的 URL 如果无法匹配给定方法,就会产生一个 404 错误,除非定义了一个 default 方法。
下面是一些可能的 URL 情况及其结果:
/:显示没有父 id 的第一个分类
/category?categoryID=2:显示 id 值为 2 的分类。
/category/1:显示 id 值为 1 的分类(格式为 TG 0.9)
/category:抛出一个 500 错误,这是因为缺少分类 id。
/xyz:抛出一个 404 错误
图 2 给出了分类显示的页面:
图 2. 分类显示
产品显示
对于产品显示页面来说,我们要创建一个 product 控制器,它会从数据库中检索出一个产品,并将其传递给 product Kid 模板进行呈现。
清单 14. 增加产品控制器方法
@expose("tgcommerce.templates.product")
def product(self, productID):
from model import Product
product = Product.get(productID)
return dict(product=product)
product.kid 模板有一个产品信息表。此处要注意用来显示价格(有两位小数)的 Python 字符串的格式:
清单 15. 分类页 kid 模板文件(product.kid)
<table id="product-info">
<tr>
<td class="fld">Name:</td>
<td class="val"><span py:replace="product.name" /></td>
</tr>
<tr>
<td class="fld">SKU:</td>
<td class="val"><span py:replace="product.sku" /></td>
</tr>
<tr>
<td class="fld">Price:</td>
<td class="val">$<span py:replace="'%.2f' % product.price" /></td>
</tr>
</table>
Tags:使用 TurboGears Python
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接