虽然Wagtail“模板加载器postmortem”的来源存在

时间:2016-01-25 13:59:48

标签: django python-2.7 django-templates wagtail

好吧,我的问题是模板加载器找不到存在的文件!! 首先,当我尝试更改网站的层次结构时发生了这种情况:

我尝试将新类型的页面(MainPage)作为Root的第一个子节点,并将其下的所有其他页面(Home和Events)设置为它。因此,以前位于根级别的HomePage现在设置为MainPage的子级,而Events是HomePage的子级。

我通过wigtail的管理界面完成了所有这些。 接下来,我创建了一个main_page.html模板,用于加载base.html和使用过的标记。

但是现在它变得棘手了:

由于一切都运行良好,在层次结构更改后,模板加载器不再找到用于导航栏的文件: top_menu_children.html。这是我的层次结构:

- my-site/
     |  - my-app/
             |  - templatetags/
                       |  - my-app_tags.py
             |  - templates/
                       |  - my-app/
                              |  - main_page.html
                              |  - events_page.html
                              |  - home_page.html
                              |  - tags/
                                     |  - top_menu.html
                                     |  - top_menu_children.html
     |  - my-site/
             |  - templates/
                       |  - base.html

现在这里是my-app_tags.py的内容:

...
@register.inclusion_tag('my-app/tags/top_menu_chidren.html'
                        ,takes_context=True)
    def top_menu_children(context, parent):
        menuitems_children = parent.get_children()
        menuitems_children = menuitems_children.live().in_menu()
        return {
           'parent': parent,
            'menuitems_children': menuitems_children,
            'request': context['request'],
        }              

最后这是我得到的错误的摘录:

Template-loader postmortem

Django tried loading these templates, in this order:

Using engine django:

django.template.loaders.filesystem.Loader: ../my-site/my-site/templates/my-app/tags/top_menu_chidren.html (Source does not exist)
django.template.loaders.app_directories.Loader: .../my-site/my-app/templates/my-app/tags/top_menu_chidren.html (Source does not exist)

第二个应该匹配!!!!

我很抱歉,如果它看起来有点乱,但我试图描述上下文: 模板加载器正在正确的位置搜索一个存在的文件,但现在说它没有。

请帮助,因为我真的不知道是什么问题,我只需要一个线索。

1 个答案:

答案 0 :(得分:1)

模板标签注册中模板名称中有拼写错误:

@register.inclusion_tag('my-app/tags/top_menu_chidren.html'
                    ,takes_context=True)

它显示为top_menu_chidren.html,它应为top_menu_children.html,因为这是您模板的名称。

编辑

您的模板加载程序搜索名为top_menu_chidren.html的模板,或者在 templates / my-app / tags 文件夹中搜索名为top_menu_children.html的模板。