Web2py将索引和视图控制器功能组合在同一个URL上?

时间:2013-09-27 08:26:22

标签: url controller web2py

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

www.example.com/customers

www.example.com/customers/view/1

使用默认的web2py设置,映射到我的index()view()功能。

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

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

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

(注意URL中没有“视图”。也不用担心stackoverflow会遇到的slug)

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

1 个答案:

答案 0 :(得分:1)

使用pattern-based rewrite system,您可以在/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>'),
)