如何在Django的模板标签中获取上下文变量-修改Wagtail Menus模板标签

时间:2019-11-08 16:22:22

标签: django django-templates wagtail

我正在修改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
    )

该标签替代了https://github.com/rkhleics/wagtailmenus/blob/1a938576adb801c455bea4b64906fb135c89f65f/wagtailmenus/templatetags/menu_tags.py#L46

的Wagtail Menus Flat Menu模板标签

因此,我正在尝试做的是允许句柄接受上下文变量。我可以为自己的一生找出解决方案。对于handle = context,您看到的是我对更改需要去的位置的猜测,但我正在猜测。

0 个答案:

没有答案