Как получить переменную контекста в тег шаблона в django - изменение тега шаблона меню Wagtail - PullRequest
0 голосов
/ 08 ноября 2019

Я изменяю тег шаблона плоского меню Wagtail Menus, чтобы принимать переменную контекста вместо строки для дескриптора. Сценарий использования заключается в том, что я хочу получить определенное меню, основанное на slugified версии имени группы пользователя.

Шаблон выглядит следующим образом:

{% 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, найденного здесь: https://github.com/rkhleics/wagtailmenus/blob/1a938576adb801c455bea4b64906fb135c89f65f/wagtailmenus/templatetags/menu_tags.py#L46

Итак, я пытаюсь разрешить ручку принятьконтекстная переменная. Я могу на всю жизнь понять, как заставить это работать. То, что вы видите для handle = context, - это мое предположение о том, где должно произойти изменение, но я предполагаю.

...