我正在修改Wagtail Menus flatmenu模板标签,以接受上下文变量而不是句柄字符串。用例是我想根据用户组名的精简版来拉入特定菜单。
模板如下:
{% for group in user.groups.all %}
{% with handle=group.name|slugify %}
{% utility_flat_menu handle %}
{% endwith %}
{% endfor %}
templaet标签看起来像:
@register.simple_tag(takes_context=True)
def utility_flat_menu(
context, handle, max_levels=None, show_menu_heading=False,
apply_active_classes=False, allow_repeating_parents=True,
show_multiple_levels=True, template='', sub_menu_template='',
sub_menu_templates=None, fall_back_to_default_site_menus=None,
use_absolute_page_urls=False, add_sub_menus_inline=None, *args,
**kwargs
):
validate_supplied_values('flat_menu', max_levels=max_levels)
if fall_back_to_default_site_menus is None:
fall_back_to_default_site_menus = settings.FLAT_MENUS_FALL_BACK_TO_DEFAULT_SITE_MENUS
if not show_multiple_levels:
max_levels = 1
menu_class = settings.models.FLAT_MENU_MODEL
return menu_class.render_from_tag(
context=context,
handle=context,
fall_back_to_default_site_menus=fall_back_to_default_site_menus,
max_levels=max_levels,
apply_active_classes=apply_active_classes,
allow_repeating_parents=allow_repeating_parents,
use_absolute_page_urls=use_absolute_page_urls,
add_sub_menus_inline=add_sub_menus_inline,
template_name=template,
sub_menu_template_name=sub_menu_template,
sub_menu_template_names=split_if_string(sub_menu_templates),
show_menu_heading=show_menu_heading,
**kwargs
)
的Wagtail Menus Flat Menu模板标签
因此,我正在尝试做的是允许句柄接受上下文变量。我可以为自己的一生找出解决方案。对于handle = context
,您看到的是我对更改需要去的位置的猜测,但我正在猜测。