wagtail - Wagtail 按用户权限隐藏/显示菜单项
问题描述
如何在 wagtail CMS 中隐藏显示菜单:这是我在 register_admin_menu_item 钩子上的代码blog/wagtail_hooks.py
from wagtail.core import hooks
from wagtail.admin.menu import MenuItem
@hooks.register('register_admin_menu_item')
def register_custom_admin_menu_item():
return MenuItem(_('Site Admin'), reverse('admin_menu'), classnames='icon icon-folder-inverse',
order=20000)
解决方案
为了在菜单上施加访问权限,我们可以创建自定义MenuItem
类并重写is_shown
方法,如下所示:
class CustomAdminMenuItem(MenuItem):
def is_shown(self, request):
return request.user.is_staff
现在使用它CustomAdminMenuItem
而不是 MenuItem ,例如:
from wagtail.core import hooks
from wagtail.admin.menu import MenuItem
@hooks.register('register_admin_menu_item')
def register_custom_admin_menu_item():
return CustomAdminMenuItem(_('Site Admin'), reverse('admin_menu'), classnames='icon icon-folder-inverse',
order=20000)
has_perm
您也可以使用内部 is_shown来实现自定义权限检查,例如:
class CustomMenuItem(MenuItem):
def is_shown(self, request):
return (
request.user.has_perm('wagtailsearchpromotions.add_searchpromotion') or
request.user.has_perm('wagtailsearchpromotions.change_searchpromotion') or
request.user.has_perm('wagtailsearchpromotions.delete_searchpromotion')
)
有关更多详细信息,请访问此处的源代码和此处的 文档。
推荐阅读
- r - R perform summary operation and subset result by data.table column
- javascript - 如何在 react-native 中设置警报按钮?
- c# - 在 C# 的 linq 查询中使用 await
- javascript - 试图在点击上获取行数据
- angular - 禁用对角度单选按钮选择的验证
- anova - 错误发现率校正 - 确定测试次数?包括什么
- curl - 我可以通过 Curl 模仿 Spring RestTemplate 请求吗?
- javascript - 为什么 Dexie 的带有非入站键的 bulkPut() 需要键数组参数?
- javascript - 反应视口渲染问题
- mongodb - Realms/MongoDB user.functions 或 user.callFunction 不是函数