如何让_base.py中的指定链接仅对超级用户及有权限者可见?
实现"Upload User Data"链接的权限控制
嘿,我来帮你搞定这个权限控制的问题!要让这个链接只对超级用户和拥有bulkupdate.access_user权限的用户可见,核心就是在生成这个链接的逻辑里加入双重条件判断,具体可以这么做:
- 首先,获取当前登录的用户对象(通常是
request.user) - 然后判断两个条件中的任意一个是否成立:
- 用户是超级用户:
request.user.is_superuser - 用户拥有指定权限:
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
相关产品推荐
相关产品推荐

