Django模板继承(扩展的位置)

时间:2016-02-16 14:02:44

标签: django django-templates

我正在尝试创建base.html以从我的应用中扩展它。

我的结构:

ROOT(pyshop)

  • 轮询
    • 模板
      • 轮询
        • index.html(包含{%extends“base.html”%})
  • pyshop
    • 模板
      • base.html文件

但它无法找到base.html

  

模板加载器postmortem

     

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

     

使用引擎django:   django.template.loaders.app_directories.Loader:/home/sz/Projects/pyshop/polls/templates/pyshop/base.html(来源不存在)   django.template.loaders.app_directories.Loader:/home/sz/Projects/pyshop/venv/lib/python3.5/site-packages/django/contrib/admin/templates/pyshop/base.html(来源不存在)   django.template.loaders.app_directories.Loader:/home/sz/Projects/pyshop/venv/lib/python3.5/site-packages/django/contrib/auth/templates/pyshop/base.html(来源不存在)

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

应用程序目录加载程序不会搜索您的pyshop/pyshop/templates目录,因为它不是应用程序。通常的方法是将此目录添加到DIRS列表。

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'pyshop', 'templates'),]
    ...
    }
]

其次,回溯使您看起来好像在做{% extends "pyshop/base.html" %}而不是问{% extends "base.html" %}。如果您有{% extends "base.html" %},则需要将base.html模板移至pyshop/pyshop/templates/pyshop/base.html