Python 通过django用户权限限制管理员菜单项

Python 通过django用户权限限制管理员菜单项,python,django,django-admin,wagtail,Python,Django,Django Admin,Wagtail,我正在扩展wagtail,我正在使用下一个钩子: python @hooks.register('register\u settings\u menu item') def register_django_admin_菜单项(): return MenuItem('Site Admin'),'/django Admin',classnames='icon-icon-wagtail-inverse',order=20000) 我还获得了django管理页面的链接,但我想将该项目仅限于具有员工权限

我正在扩展wagtail,我正在使用下一个钩子:
python
@hooks.register('register\u settings\u menu item')
def register_django_admin_菜单项():
return MenuItem('Site Admin'),'/django Admin',classnames='icon-icon-wagtail-inverse',order=20000)

我还获得了django管理页面的链接,但我想将该项目仅限于具有员工权限的用户。


我该怎么做呢?

有个装饰师:

from django.contrib.admin.views.decorators import staff_member_required

@staff_member_required
@hooks.register('register_settings_menu_item')
def register_django_admin_menu_item():
    return MenuItem(_('Site Admin'), '/django-admin', classnames='icon icon-wagtail-inverse', order=20000)

有一个装饰师:

from django.contrib.admin.views.decorators import staff_member_required

@staff_member_required
@hooks.register('register_settings_menu_item')
def register_django_admin_menu_item():
    return MenuItem(_('Site Admin'), '/django-admin', classnames='icon icon-wagtail-inverse', order=20000)
试试这个:

    class CustomAdminMenuItem(MenuItem):
        def is_shown(self, request):
            return request.user.is_staff


    @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)
试试这个:

    class CustomAdminMenuItem(MenuItem):
        def is_shown(self, request):
            return request.user.is_staff


    @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)

创建一个装饰器,用于检查登录用户是否具有人员权限。创建一个装饰器,用于检查登录用户是否具有人员权限。否,该项仍显示在菜单中。@Salahadin您作为谁登录?我创建了一个没有人员权限的用户,并用它进行了测试。在admin中显示该项,但当我单击django admin站点拒绝我时,这意味着我没有权限。所需的
职员\u成员
装饰器仅在视图上工作,而不是
注册设置\u菜单项
挂钩功能。否,该项仍然显示在菜单中。@SalahAdDin您以谁的身份登录?我创建了一个没有员工权限的用户,并用它进行了测试。在admin中显示该项,但当我单击django admin站点拒绝我时,这意味着我没有权限。所需的
staff\u member\u
decorator仅在视图上工作,而不在
register\u settings\u菜单项上工作。