使用web2py中的menu.py将视图添加为菜单项

rah*_*ver 1 python model-view-controller web2py

有人帮我理解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'))  
]
Run Code Online (Sandbox Code Playgroud)

在这里,我们在URL中指定控制器(例如,默认/什么).如果我想在此指定视图怎么办?

Ant*_*ony 9

在这里,我们在URL中指定控制器(例如,默认/什么).如果我想在此指定视图怎么办?

在web2py中,URL不会直接路由到视图.相反,它们路由到控制器,并且控制器具有关联的视图(每个控制器都有一个默认视图,但控制器本身可以指定任何视图).如果您想使用URL告诉给定的控制器使用除通常视图之外的视图,您可以通过URL中的arg或var来指示.例如:

response.menu = [...,
    (T('About'), False,URL('default', 'what', args='alt')),
    ...]
Run Code Online (Sandbox Code Playgroud)

并在default.py控制器中:

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

  • 布尔值表示该特定菜单项是否有效(即当前选择的项).当设置为True时,`MENU()`帮助器将为该项的`<li>`添加一个"web2py-menu-active"类(您可以通过"li_active"参数将该类的名称更改为` MENU()`).指定活动URL的另一种方法是通过其"active_url"参数直接将其传递给`MENU()`. (5认同)
  • 谢谢安东尼!那太好了.但是在T('About')之后列表中的布尔值是多少? (3认同)