Django TemplateDoesNotExist на рабочем сервере, когда он работает в разработке

Я получаю следующую ошибку. Это ТОЛЬКО В ПРОИЗВОДСТВЕ, где я развертываю приложение Django, используя apache + mod_wsgi. ЭТО ОТЛИЧНО РАБОТАЕТ В РАЗРАБОТКЕ сервера (мой компьютер):

TemplateDoesNotExist at /
base.html

посмертный. как вы можете видеть, выполняется поиск только в одной из двух моих папок из настроек:

Django tried loading these templates, in this order:
Using loader django.template.loaders.filesystem.Loader:
Using loader django.template.loaders.app_directories.Loader:
/home/bot_frontend/horses/templates/base.html (File does not exist)
/usr/local/lib/python2.7/dist-packages/django/contrib/admin/templates/base.html (File does not exist)
/usr/local/lib/python2.7/dist-packages/django/contrib/auth/templates/base.html (File does not exist)
/home/virtualenvs/bot_frontend/lib/python2.7/site-packages/django_extensions/templates/base.html (File does not exist)

Вот мои настройки. Шаблон base.html находится в папке "templates":

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            os.path.join(BASE_DIR, "templates"),
            os.path.join(BASE_DIR, "horses/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',
            ],
        },
    },
]

Здесь я подтверждаю, что этот шаблон действительно существует:

>>> from django.template.loader import get_template
>>> get_template("base.html")
<django.template.backends.django.Template object at 0x7f6af68d38d0>

Как вы можете видеть, только одна папка из двух в моих каталогах шаблонов ищется, в то время как на сервере разработки все работает нормально. Любые идеи, почему это может быть? Возможно ли, что это какая-то проблема с разрешениями.


person Marijus    schedule 31.03.2017    source источник
comment
Apache запустит ваш код от имени специального пользователя. Разрешения на каталоги/файлы такие, что другой пользователь может получить к ним доступ.   -  person Graham Dumpleton    schedule 31.03.2017
comment
@GrahamDumpleton Не могли бы вы привести пример?   -  person Marijus    schedule 01.04.2017
comment
Что вы получаете, когда запускаете ls -las /home/bot_frontend/horses/templates/base.html и ls -lasd /home/bot_frontend.   -  person Graham Dumpleton    schedule 01.04.2017


Ответы (1)


Добавление второй записи для DIRS в settings.py устранило эту проблему для меня.

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': ['templates'],'
        'DIRS': [BASE_DIR + "/templates", ],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
person Dan Walters    schedule 04.12.2017