Skip to content

menus empty if generate_menu not called within same block. #79

Open
@nerdoc

Description

@nerdoc

the docs say that {% generate_menu %} needs to be called within a block. I think this is not correct, as it seems to need to be called within the same block you are using the menu.
Using a simple pattern to demonstrate this:

# base.html template
<html>
<head>
</head>
<body>
  {% block generate_menu %}
    {% generate_menu %}
  {% endblock %}

  {% block content %}
  Empty page.
  {% endblock %}
</body>
</html>

Now use a template that inherits this:

# application.html
{% extends 'base.html' %}

{% block content %}
Now you should see menus, but you don't.
{{ menus }}
{% endblock %}

Here you just override the content block. The generate_menu block should be inherited by extend and be untouched, so generate_menu should be called - which I can confirm by debugging.

The problem seems to be that the context which is passed to MenuNode.render() does't seem to get passed through to the correct template in application.html.

If I add {% generate_menu %} within the content block in application.html, everything is ok. Even if I add {% generate_menu %} in a new generate_menu block in application.html (which is "a block", like the docs say), it does NOT work.

Is this intended behaviour? Or a bug?

Metadata

Metadata

Assignees

Labels

docsIssue with the project's documantation

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions