在金字塔中制作动态生成的菜单

时间:2013-08-09 14:51:47

标签: security menu permissions acl pyramid

我正在尝试根据代码中的设置自动更改菜单,因此我的模板中没有重复的逻辑。现在,我使用路径名称生成request.route_path(name)的网址,并使用request.matched_route.name确定用户当前页面的内容。我现在的问题是我希望在不同的视图上拥有不同的权限,并自动隐藏用户无权访问的菜单项。

主要困难之一是您可以为一条路线提供多个视图。但即使只有一个与路径相关的视图,我似乎找不到任何简单的方法来检索它。

我正在使用URL Dispatch。这是否只能通过遍历来实现?

1 个答案:

答案 0 :(得分:0)

通常我会使用以下模式的组合:

  • 我的观点被分类为
  • 基类有一个基本_menu,它是(menu_title, route_name, params)的列表,其中params是一个可选的现有字典。在模板中,我可以使用menu属性,根据请求和上述属性构建菜单。
  • 在模板中创建一个迭代这些条目的函数,显示每个条目,但如果实际允许查看,则使用has_permission进行检查。

这些想法可以帮助您开始动态解决方案。它对我来说很好,但它可能需要更多调整,例如,我根据当前路线将另一个值“激活”附加到生成的菜单。