首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >可以用自定义函数覆盖wagtail.hooks.register函数吗?

可以用自定义函数覆盖wagtail.hooks.register函数吗?
EN

Stack Overflow用户
提问于 2022-05-04 10:04:44
回答 1查看 108关注 0票数 0

是否可以用自定义函数覆盖摇尾@hooks.register函数,或者将函数全部取消注册?

我想要实现的一个例子是在register_styleguide_menu_item中编辑wagtail/contrib/styleguide/wagtail_hooks.py函数,以便样式指南只显示给超级用户。

例如,我想重写当前函数:

代码语言:javascript
运行
复制
@hooks.register("register_settings_menu_item")
def register_styleguide_menu_item():
    return MenuItem(
        _("Styleguide"), reverse("wagtailstyleguide"), icon_name="image", order=1000
    )

在这方面:

代码语言:javascript
运行
复制
@hooks.register("register_settings_menu_item")
def register_styleguide_menu_item():
    return AdminOnlyMenuItem(
        _("Styleguide"), reverse("wagtailstyleguide"), icon_name="image", order=1000
    )

(请注意第三行从MenuItem到AdminOnlyMenuItem的更改)

用于摇尾钩子的文档可以在https://docs.wagtail.org/en/stable/reference/hooks.html上使用,但它不包括此场景。

是否有机制可以做到这一点呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-05 10:03:54

要根据request修改菜单项,您需要使用不同的钩子。

无论是construct_main_menu for the main menu还是construct_settings_menu for the settings menu

代码语言:javascript
运行
复制
from wagtail.core import hooks

@hooks.register('construct_settings_menu')
def hide_styleguide_menu_item(request, menu_items):
  if not request.user.is_superuser:
    menu_items[:] = [item for item in menu_items if item.name != 'styleguide']

注意: item.name可能不是'styleguide',可能是'Styleguide'

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72111159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档