我有一个客户索引功能和一个客户视图功能,它列出了所有客户并分别查看了一个客户。网址如下:
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智能地映射到正确的控制器函数?
答案 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>'),
)