是否可以在应用的模板中包含installed_app的模板

时间:2016-06-18 00:33:46

标签: django django-templates

我有一个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例外。

我也尝试过:

  1. from django.template.loader import get_template
  2. get_template('reusable_app/templates/reusable_template.html')

2 个答案:

答案 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" %}