【问题标题】: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 之类的内容进行检查。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-27
      • 1970-01-01
      • 2012-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多