Django:间歇'模板未找到'

时间:2016-12-01 14:14:17

标签: django templates nginx uwsgi centos7

我有一个应用程序部署在15个站点并已运行了6年。所有这些部署都使用django 1.5,python 2.6,CentOS6和apache,它们都运行良好。我刚刚在一个新站点部署了应用程序,但这个是django 1.9,python 2.7,CentOS7和nginx / uwsgi。只有在这个网站,我们才会看到间歇性的“模板未找到”错误。刷新页面始终有效。它发生在不同的模板中,并且任何日志中都没有错误(模板未找到错误除外)。我检查了系统日志,nginx日志,uwsgi日志和django日志。

任何人都知道为什么会发生这种情况,和/或我如何进一步调试它?

有一件事我注意到了,这可能是正常的,但我不知道因为我以前从未遇到过这个错误,是在模板找不到错误时它列出了它搜索到的目录,它们都在/ tmp目录。例如,如果模板位于/usr/local/foo/bar/templates/baz/template.html中,则错误中的搜索路径将包含/ tmp / foo / bar / templates / baz。这有问题的迹象吗?

根据要求提供更多信息:

错误:

TemplateDoesNotExist at /report/CDSEM/WaferToWafer/

WaferToWafer/view.html

模板搜索:

Template-loader postmortem

Django tried loading these templates, in this order:

Using engine django:

django.template.loaders.filesystem.Loader: /usr/local/motor/motor/ui/templates/WaferToWafer/view.html (Source does not exist)
django.template.loaders.app_directories.Loader: /usr/lib/python2.7/site-packages/django/contrib/admin/templates/WaferToWafer/view.html (Source does not exist)
django.template.loaders.app_directories.Loader: /usr/lib/python2.7/site-packages/django/contrib/auth/templates/WaferToWafer/view.html (Source does not exist)
django.template.loaders.app_directories.Loader: /tmp/core/alerts/templates/WaferToWafer/view.html (Source does not exist)
django.template.loaders.app_directories.Loader: /tmp/core/reports/templates/WaferToWafer/view.html (Source does not exist)
django.template.loaders.app_directories.Loader: /tmp/app/cdsem/templates/WaferToWafer/view.html (Source does not exist)
django.template.loaders.app_directories.Loader: /tmp/app/semvision/templates/WaferToWafer/view.html (Source does not exist)
django.template.loaders.app_directories.Loader: /tmp/app/developer/templates/WaferToWafer/view.html (Source does not exist)
django.template.loaders.app_directories.Loader: /tmp/ui/templates/WaferToWafer/view.html (Source does not exist)
django.template.loaders.app_directories.Loader: /tmp/configuration/templates/WaferToWafer/view.html (Source does not exist)

来自设置的模板:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'motor/ui/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',
                'context_processors.config',
                'ui.context_processors.navigation',
                'core.appmngr.context_processor',
            ],
        },
    },
]

它正在搜索的模板确实存在于/usr/local/motor/motor/app/cdsem/templates/WaferToWafer/view.html

当我刷新页面时出现错误,它可以正常工作。

1 个答案:

答案 0 :(得分:0)

我通过在TEMPLATES dict中明确列出模板dirs来“修复”这个问题。仍然不知道为什么我必须在这一个网站上这样做。