1

我已经查看了与此相关的其他 SO 问题,但没有任何帮助。

我刚刚安装了一个应用程序并添加到设置中的 INSTALLED_APPS 变量中。应用程序 django_messages 从它的每个模板扩展了一个 base.html 模板。

出于某种原因,django 不会递归地在应用程序目录中搜索此模板。

这是错误:在模板/Library/Python/2.7/site-packages/django_messages/templates/django_messages/inbox.html,第1行错误

{% extends "django_messages/base.html" %}

该文件位于:/Library/Python/2.7/site-packages/django_messages/templates/django_messages/base.html

但 django 给出的搜索路径是:

Django 尝试按以下顺序加载这些模板:

使用引擎 django:

django.template.loaders.app_directories.Loader: /Library/Python/2.7/site-packages/django_messages/templates/base.html (Source does not exist)

因此,根据我对模板加载器的了解,它应该在 /Library/Python/2.7/site-packages/django_messages/templates/ 中搜索文件是有意义的。但是该文件称为“django_messages/base.html”,所以我不明白为什么 django 在 django_messages/templates 中寻找 base.html 并忽略 django_messages 限定符。

我所有的其他模板(在我自己的应用程序中)都以这种方式设置 app_name/templates/app_name/xxx.html,如 django 文档中所示。所以一切看起来都是正确的,但不起作用。

任何帮助都感谢我厌倦了在这上面敲我的脑袋。

谢谢。

4

1 回答 1

1

所以我发现了为什么会发生这种情况......

文件 django_messages/base.html 试图扩展“base.html”。我认为这样做的原因是它旨在扩展您自己的 base.html 文件,但是我的 base.html 文件位于 app_name/base.html 下。

一旦我更改了 django_messages/base.html 中的路径,我就再也没有遇到任何错误。希望这对其他人有帮助。这很令人困惑,因为它说错误是从文件 django_messages/inbox.html 扩展“django_messages/base.html”并且这些路径都是正确的,所以它似乎正在评估 django_messages/base.html 上的扩展并且不能找到这个文件,但将回溯添加到 inbox.html 而不是我所期望的 django_messages/base.html 。无论如何,现在一切都很好。

于 2016-12-11T17:08:32.947 回答