【问题标题】:making dynamically generated menus in Pyramid在 Pyramid 中制作动态生成的菜单
【发布时间】:2013-08-11 13:21:26
【问题描述】:
我试图让我的菜单根据我的代码中的设置自动更改,因此我的模板中没有重复的逻辑。现在我使用路由名称生成带有request.route_path(name) 的url,并使用request.matched_route.name 确定用户当前所在的页面。我现在的问题是我想对不同的视图有不同的权限,并自动隐藏用户没有权限的菜单项。
主要困难之一是您可以为一条路线拥有多个视图。但即使只有一个视图与路线相关联,我似乎也找不到任何简单的方法来检索它。
我正在使用 URL 调度。这是只有遍历才能做到的事情吗?
【问题讨论】:
标签:
security
menu
permissions
acl
pyramid
【解决方案1】:
通常我会为此使用以下模式的组合:
- 我的观点被组织成分类
- 基类有一个基本的
_menu,它是(menu_title, route_name, params) 的列表,其中params 是一个可选存在的字典。在模板中,我可以使用 menu 属性,该属性根据请求和上述属性构建菜单。
- 在模板中创建一个迭代这些条目的函数,显示每个条目,但如果实际允许查看,则使用
has_permission 之类的内容进行检查。
这些想法应该可以帮助您开始使用动态解决方案。它对我来说很好,但它可能需要更多的调整,例如,我将另一个值“活动”附加到基于当前路线的生成菜单。