我有一个django应用 TestApp 。在TestApp的模板目录中,我有一个 test_template.html 。 TestApp的settings.py有一个名为 reusable_app 的可重用应用程序(在INSTALLED_APPS
列表中)。此可重用应用程序的templates目录中有一个名为reusable_template.html
的模板。
是否可以使用{%include}标记在test_template.html中包含reusable_template.html?
我在test_template.html中尝试{% include "reusable_app/templates/reusable_template.html" %}
,但获得了TemplateDoesNotExist
例外。
我也尝试过:
from django.template.loader import get_template
get_template('reusable_app/templates/reusable_template.html')
答案 0 :(得分:0)
如果您有项目结构:
+app
|
+project/urls.py
| |
| +wsgi.py
| |
| +settings.py
|
+templates/base.html
|
+static/
然后你的模板必须在
+app+
| |
| +templates/your_app_base.html
| |
| +your_tempplate.html
+project/urls.py
| |
| +wsgi.py
| |
| +settings.py
|
+templates/base.html
|
+static/
Django首先检查你的应用程序的模板目录,如果找不到模板,则从主模板目录中获取它。确保您的模板加载器已在settings.py中配置
答案 1 :(得分:0)
Django将查看应用程序的templates
目录,因此您不应在路径中指定此内容。这应该有效:
{% include "reusable_template.html" %}
当然,假设只有名为reusable_template.html
的模板的应用才是您的reusable_app
。
为了最大限度地降低模板冲突的风险,通常在应用的templates
目录中有一个子目录,以便模板的路径为reusableapp/templates/reusableapp/reusable_template.html
。然后,您将其包含在:
{% include "reuseable_app/reusable_template.html" %}