【问题标题】:TemplateDoesNotExist error when extending an app template扩展应用模板时出现 TemplateDoesNotExist 错误
【发布时间】:2020-04-15 09:56:57
【问题描述】:

我在设置模板(在 app 目录下)以扩展 root/templates/jinja2 目录中的 base.html 时遇到问题

settings.py

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.jinja2.Jinja2',
        'DIRS': [
            os.path.join(BASE_DIR, 'templates/jinja2')
        ],
        'APP_DIRS': True,
         ...
        },
    }
]

文件夹结构:

apps
|---app1
    |---templates
        |---jinja2
            |---listing.html
|---templates
    |---jinja2
        |---base.html

listing.html

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

我拉入listing.html时遇到的错误:

TemplateDoesNotExist at ...
base.html

Django tried loading these templates, in this order:

Using engine django:
django.template.loaders.app_directories.Loader: /webapps/pickup/env/lib/python3.7/site-packages/django/contrib/admin/templates/base.html (Source does not exist)
django.template.loaders.app_directories.Loader: /webapps/pickup/env/lib/python3.7/site-packages/django/contrib/auth/templates/base.html (Source does not exist)
django.template.loaders.app_directories.Loader: /webapps/pickup/src/apps/listing/templates/base.html (Source does not exist)

在根模板文件夹中扩展基本模板的正确方法是什么?我正在使用 Django 3.0.5

【问题讨论】:

  • 只是要注意,如果我把listing.html放在root/templates/jinja2中,没有错误。
  • 找出问题所在:listing.html 应该在 app1/jinja2/ 中,而不是在 app1/templates/jinja2/

标签: django django-templates


【解决方案1】:

使您的文件夹结构正确

apps

|---app1

    |---templates

        |---app1

            |---listing.html
            |---base.html

【讨论】:

  • 我想将base.html 放入project_root/templates/base.html 中,以便所有应用共享。
  • 只需复制base.html并再次放入其他应用模板中
【解决方案2】:

APP_DIRS 表示您可以在应用程序中使用您在设置中注册的模板文件夹。

指定自定义路径需要添加NAME参数。 或者只是尝试在 app1/templates/app1/

中移动 listing.html

【讨论】:

  • 如果我切换到使用 django 模板,那么 app1/templates/listing.htmlproject_root/templates/base.html 可以工作。但是由于某些原因,当我使用jinja2时,它没有找到base.html
猜你喜欢
  • 2013-05-16
  • 1970-01-01
  • 2015-11-21
  • 2015-03-20
  • 1970-01-01
  • 2016-02-23
  • 1970-01-01
  • 2013-06-24
  • 1970-01-01
相关资源
最近更新 更多