Wagtailmenus中sub_menu标签失效,子菜单无法显示求助
1. 核对模板标签参数传递
确保调用{% main_menu %}时明确指定子菜单模板路径,示例:
{% main_menu template="main_menu.html" sub_menu_template="sub_menu.html" %}
在main_menu.html中,先验证菜单项是否存在子节点,再调用sub_menu标签:
{% for item in menu_items %} <li> <a href="{{ item.href }}">{{ item.title }}</a> {% if item.has_children %} {% sub_menu item %} {% endif %} </li> {% endfor %}
可临时添加{{ item.has_children }}输出,确认该值是否为True,若为False说明系统未识别到子页面。
2. 验证版本兼容性
当前环境组合:Django 5.0 + Wagtail 6.2.1 + wagtailmenus 4.0.1,需确认wagtailmenus 4.0.1是否完全适配Wagtail 6.x及Django 5.0。若存在兼容缺口,尝试:
- 降级wagtailmenus至适配Wagtail 6.x的稳定版本
- 升级wagtailmenus到最新兼容版本
3. 检查上下文处理器配置
确认settings.py中TEMPLATES的上下文处理器配置无误,确保wagtailmenus.context_processors.wagtailmenus已添加:
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'wagtailmenus.context_processors.wagtailmenus', ], }, }, ]
4. 确认页面菜单设置细节
- 父页面「settings」及所有子页面(Triggers、Scripts等)均需勾选「Show in menu」
- 子页面的「Parent page」需正确设置为「settings」
- 后台菜单配置中,「Allow 3 levels of sub-navigation」需对应到当前使用的主菜单配置
5. 检查INSTALLED_APPS加载顺序
确保wagtailmenus在INSTALLED_APPS中置于Wagtail核心应用之后,示例:
INSTALLED_APPS = [ # ... Django核心应用 'wagtail.contrib.forms', 'wagtail.contrib.redirects', 'wagtail.embeds', 'wagtail.sites', 'wagtail.users', 'wagtail.snippets', 'wagtail.documents', 'wagtail.images', 'wagtail.search', 'wagtail.admin', 'wagtail', # 放在Wagtail应用之后 'wagtailmenus', # ... 其他自定义应用 ]
内容的提问来源于stack exchange,提问作者K. Trotman
相关产品推荐
相关产品推荐

