Skip to main content
 首页 » 编程设计

python之在 web2py 中使用 menu.py 添加 View 作为菜单项

2025年05月04日38kuangbin

有人好心帮助我理解 models/menu.py 文件的以下代码:

response.menu = [   
(T('Home'),False,URL('default','index')),   
(T('About'),False,URL('default','what')),   
(T('Download'),False,URL('default','download')),   
(T('Docs & Resources'),False,URL('default','documentation')),   
(T('Support'),False,URL('default','support')),   
(T('Contributors'),False,URL('default','who'))   
] 

在这里,我们在 URL 中指定 Controller (例如.default/what)。如果我想在其中指定一个 View 怎么办?

请您参考如下方法:

In this,we specify the controller in the URL(eg.default/what). What if I wish to specify a view in this?

在 web2py 中,URL 不会直接路由到 View 。相反,它们路由到 Controller , Controller 有关联的 View (每个 Controller 都有一个默认 View ,但 Controller 本身可以指定任何 View )。如果你想使用 URL 来告诉给定的 Controller 使用它通常 View 以外的 View ,你可以通过 URL 中的 arg 或 var 来指示。例如:

response.menu = [..., 
    (T('About'), False,URL('default', 'what', args='alt')), 
    ...] 

在 default.py Controller 中:

def what(): 
    if request.args(0) == 'alt': 
        response.view = 'default/what_alt.html' 
    [rest of controller code]