0

我有一个客户索引功能和一个客户查看功能,分别列出所有客户并查看单个客户。网址如下:

www.example.com/customers

www.example.com/customers/view/1

其中,使用默认的 web2py 设置,映射到我的index()view()函数。

这没关系,但 url 的“视图”部分可能是多余的。相反,我想在我的应用程序中使用类似 stackoverflow 的 URL。也就是说,我希望我的应用程序表现得像

www.stackoverflow.com/questions(这显示了问题列表)

www.stackoverflow.com/questions/4(这显示了一个问题)

(请注意 URL 中没有“视图”。也不要介意 stackoverflow 附加的 slug)

所以我的问题是如何设置 web2py 来做到这一点?我是否必须将 myindex()view()函数的逻辑组合成一个函数来检测是否存在 ID 参数?或者我可以将它们保留为单独的功能,并以某种方式让 web2py 智能地映射到正确的控制器功能?

4

1 回答 1

1

使用基于模式的重写系统,您可以在 /web2py/routes.py 中执行以下操作:

routes_in = (
    ('/myapp/customers/(?P<id>\d+)$', '/myapp/customers/view/\g<id>'),
)

routes_out = (
    ('/myapp/customers/view/(?P<id>\d+)$', '/myapp/customers/\g<id>'),
)
于 2013-09-27T13:26:46.067 回答