gpt4 book ai didi

django - 在不调用它们的情况下找到 Django URL 所需的权限?

转载 作者:行者123 更新时间:2023-12-04 12:23:36 28 4
gpt4 key购买 nike

我的 Django 应用程序当前具有受“permission_required()”函数保护的 URL。

这个函数以三种不同的方式被调用。

  • 作为 views.py 中的装饰器,带有硬编码参数。
  • 作为一个普通函数,带有自动生成的参数,在自定义的基于类的通用 View 中。
  • 作为调用 urls.py 中的 View 的函数,带有硬编码参数。

  • 我现在正在向应用程序添加一个菜单系统,我需要让菜单条目反射(reflect)用户是否有权请求每个菜单条目的 URL。 (通过灰显或隐藏所述条目。)

    有没有办法在不请求 URL 的情况下查询 URL 所需的权限?

    到目前为止,我想到的唯一解决方案是用无参数的“menu_permssion_required()”装饰器替换装饰器,并将所有权限硬编码到 Python 结构中。这看起来像是倒退了一步,因为我的自定义基于类的通用 View 已经自动生成了它们所需的权限。

    关于如何制作反射(reflect)当前用户的 URL 权限的菜单系统的任何建议?

    最佳答案

    Is there a way of query the permissions required to a URL without requesting the URL?



    User.has_perm()User.has_module_perms()

    Any suggestions on how to make a menu system which reflects URL permissions for the current user?



    我真的很喜欢这个问题,因为它涉及任何用 django 制作网站的人,所以我觉得它非常相关。我自己也经历过,甚至 coded a menu "system"在我 2008 年的第一个 django 项目中。但从那以后我尝试了 Pinax,我从他们的示例项目中学到的(这么多)事情之一是它完全是不必要的膨胀。

    因此,对于如何制作尊重请求用户权限的菜单“系统”,我没有任何建议。

    我确实有关于如何制作一个尊重请求用户权限的简单菜单的建议,因此这可能并非完全无关。
  • 只需在纯 HTML 中制作您的菜单 ,它不会像它那样经常变化以至于它必须被生成。这也将使您的 Python 代码更简单。
  • 添加到 settings.TEMPLATE_CONTEXT_PROCESSORS :'django.core.context_processors.PermWrapper'
  • 使用 {{ perms }} proxy 到 User.has_perms。

  • 例子:
    {% if perms.auth %}
    <li class="divider"></li>

    {% if perms.auth.change_user %}
    <li>
    <a href="{% url admin:auth_user_changelist %}">{% trans 'Users' %}</a>
    </li>
    {% endif %}

    {% if perms.auth.change_group %}
    <li>
    <a href="{% url admin:auth_group_changelist %}">{% trans 'User groups' %}</a>
    </li>
    {% endif %}

    {% endif %}
    {# etc, etc #}

    这就是我保持导航的方式 简单 , 愚蠢的 , 和 让开 .但我也总是包括 an autocomplete离菜单不远,允许用户轻松导航到任何详细信息页面。所以,这就是我对 Django 项目中导航的了解,我很想阅读其他答案!

    关于django - 在不调用它们的情况下找到 Django URL 所需的权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10966493/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com