是否可以用自定义函数覆盖摇尾@hooks.register函数,或者将函数全部取消注册?
我想要实现的一个例子是在register_styleguide_menu_item中编辑wagtail/contrib/styleguide/wagtail_hooks.py函数,以便样式指南只显示给超级用户。
例如,我想重写当前函数:
@hooks.register("register_settings_menu_item")
def register_styleguide_menu_item():
return MenuItem(
_("Styleguide"), reverse("wagtailstyleguide"), icon_name="image", order=1000
)在这方面:
@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上使用,但它不包括此场景。
是否有机制可以做到这一点呢?
发布于 2022-05-05 10:03:54
要根据request修改菜单项,您需要使用不同的钩子。
无论是construct_main_menu for the main menu还是construct_settings_menu for the settings menu。
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'。
https://stackoverflow.com/questions/72111159
复制相似问题