跳转到主要内容

未知

项目描述

https://travis-ci.org/rebeccaframework/rebecca.menu.png?branch=master

介绍

rebecca.menu 是一个 pyramid 组件,它提供菜单URL的管理。

安装

您可以使用pip安装 rebecca.menu

$ pip install rebecca.menu

使用

rebecca.menu 提供包含钩子。

config.include('rebecca.menu')

注册并使用菜单

要添加菜单,请使用 add_route_menu 指令。

config.add_route('menu1', '/menus/menu1')
config.add_route('menu2', '/menus/menu2')
config.add_route_menu(menu_name="system", route_name="menu1", display_name="system menu item1")

或者使用 route_menu_config 装饰器。

@route_menu_config('system')
class SystemMenu3(object):
    route_name="menu3"
    display_name = "system menu item3"

要获取菜单,请使用 get_menu API

from rebecca.menu import get_menu

def menu(request):
    system_menu = get_menu(request, system)
    return dict(menu=system_menu)

get_menu 返回一个提供 rebecca.menu.interfaces.IMenu 的对象。 IMenu 有一个名为 menu_items 的属性,它是一个包含 IMenuItem 的列表。

IMenuItem 有一些属性,如 display_namenameurl。您可能需要在模板中使用菜单项,如下所示

<ul class="nav">
%for m in system_menu.menu_items:
    <li><a href="${m.url}">${m.display_name}</a></li>
%endfor
</ul>

权限

带有权限的菜单注册

@route_menu_config('system')
class SystemMenu3(object):
    route_name="menu3"
    display_name = "system menu item3"
    permission = 'menu3-permission'

get_menu 使用 has_permission 检查请求的权限,导致 menu_items 包含通过权限检查的菜单项。

Matchdict

如果路由有占位符,菜单URL将填充来自 request.matchdict 的值。

config.add_route("menu1", 'menus/menu1/{testing_vars}')
menu_factory.add_item(route_name="menu1", display_name="testing-menu1")

matchdict 中有 testing_vars 的值为“that-is-testing”时,menu1的URL是“menus/menu1/that-is-testing”。

贡献者

  • Atsushi Odagiri,原作者

变更日志

0.1 (2013-10-13)

  • 首次发布

项目详情


下载文件

下载适合您平台的文件。如果您不确定该选择哪一个,请了解有关安装包的更多信息。

源代码分发

rebecca.menu-0.1.zip (9.2 kB 查看哈希值)

上传时间 源代码

支持者