You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让_base.py中的指定链接仅对超级用户及有权限者可见?

实现"Upload User Data"链接的权限控制

嘿,我来帮你搞定这个权限控制的问题!要让这个链接只对超级用户和拥有bulkupdate.access_user权限的用户可见,核心就是在生成这个链接的逻辑里加入双重条件判断,具体可以这么做:

  • 首先,获取当前登录的用户对象(通常是request.user)
  • 然后判断两个条件中的任意一个是否成立:
    1. 用户是超级用户:request.user.is_superuser
    2. 用户拥有指定权限:request.user.has_perm('bulkupdate.access_user')

具体代码实现示例

假设你在_base.py里是通过函数动态生成菜单链接的,可以修改成这样:

# _base.py 中的相关代码
def get_upload_menu_links(request):
    menu_links = []
    # 权限判断逻辑
    if request.user.is_superuser or request.user.has_perm('bulkupdate.access_user'):
        menu_links.append({
            'label': 'Upload User Data',
            'url': '/admin/user/bulk_user_update/',
            'permissions': 'bulkupdate.access_user'
        })
    return menu_links

如果你的菜单链接是直接写在模板上下文里的,也可以在模板渲染时加入判断:

<!-- 模板中的渲染逻辑示例 -->
{% if user.is_superuser or user.has_perm('bulkupdate.access_user') %}
    <a href="/admin/user/bulk_user_update/">Upload User Data</a>
{% endif %}

关键要点说明

  • request.user.has_perm('bulkupdate.access_user')是Django内置的权限检查方法,参数格式是app_label.permission_codename,和你配置的权限名完全对应
  • 超级用户默认拥有所有权限,所以is_superuser为True时,不管有没有单独配置权限都能看到链接

内容的提问来源于stack exchange,提问作者Beginner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 19:54:06