【问题标题】:Django templates not extending properlyDjango 模板没有正确扩展
【发布时间】:2016-12-17 16:11:57
【问题描述】:

我一直在尝试从我的应用程序自定义 Django REST 框架的可浏览 API 页面,如 here 所示,但子模板似乎被忽略了(顺便说一下,尝试扩展 DRF Docs 基本模板时也会发生这种情况)。这是文件树的相关部分:

├── <app>
│   ├── templates
│   │   ├── <app>
│   │   │   └── index.html
│   │   ├── rest_framework
│   │   |   └── api.html
│   │   └── rest_framework_docs
│   │       └── docs.html

即使 api.html 以 {% extends "rest_framework/base.html" %} 开头,对相关代码块(例如 bootstrap_theme)所做的更改也会被忽略,而是显示默认模板。我错过了什么?大多数相关问题是指 urls.py 中的错误,但我相信情况并非如此

PS:这是在 Django 1.9.8 上

【问题讨论】:

  • 您是否将APP_DIRS 设置为True?这可能是问题所在。
  • 是的,它默认带有True,因为我相信 Django 1.8+,所以问题出在其他地方,很遗憾。

标签: django django-templates django-rest-framework


【解决方案1】:

我一直在为同样的问题苦苦挣扎,我通过将 TEMPLATES dict 的 BASE_DIR 路径添加到 settings.py 中来修复它,如下所示:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            BASE_DIR,
            os.path.join(BASE_DIR, 'templates')
        ],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

希望这会有所帮助,否则如果您可以分享有关您项目的更多信息,也许我可以提供更多帮助;)(我的意思是:settings.py、urls、完整的项目结构...)。

【讨论】:

    【解决方案2】:

    我知道可能有点晚了,但请在您的模板设置中添加以下内容:

    'DIRS': [os.path.join(BASE_DIR, '../templates')]
    

    我的全部理由是我将模板放在与我提到的模板不同的位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-01
      • 1970-01-01
      • 2014-07-05
      • 2010-11-27
      • 1970-01-01
      • 2019-04-21
      • 1970-01-01
      相关资源
      最近更新 更多