TemplateDoesNotExist - файл существует, нет разрешений - PullRequest
2 голосов
/ 12 февраля 2011

Я получаю эту ошибку при попытке отрисовки шаблона в django:

TemplateDoesNotExist

...
Template-loader postmortem

Django tried loading these templates, in this order:
Using loader django.template.loaders.filesystem.Loader:
Using loader django.template.loaders.app_directories.Loader:

Вот моя запись settings.py:

SETTINGS_PATH = os.path.normpath(os.path.dirname(__file__))
TEMPLATE_DIRS = (
    os.path.join(SETTINGS_PATH, 'template'),
)

Вот мой взгляд, который называется:

def handler(request):
    if request.method == 'GET': 
        NewAppFormSet = modelformset_factory(Application)

    return render_to_response(request, "template/apps.html",{"new_app_form":NewAppFormSet})

Я перепробовал все возможные комбинации путей, настройки разрешений и т. Д. Похоже, что настоящая проблема связана с загрузчиками шаблонов, поскольку они не распознают пути, указанные в TEMPLATE_DIRS. Я жестко закодировал эту строку, но безрезультатно. Я также запустил python manage.py runserver с sudo / в качестве root. Я в растерянности ...

Ответы [ 6 ]

2 голосов
/ 30 декабря 2011

У меня была очень похожая проблема, которая сводила меня с ума.Оказывается, в книге, которую я использовал для изучения Python / Django, не сказано, что я должен был явно установить каталог шаблонов в settings.py.Очень запутанно.Я использую Python 2.6 и Django 1.3.1 - возможно, предыдущая версия автоматически нашла шаблон dir.Как бы то ни было, после того, как я вырвал свои волосы в течение дня и много читал на этом сайте, я понял, что мне нужно заменить задание TEMPLATE_DIRS по умолчанию следующим в settings.py:

# Find templates in the same folder as settings.py.
SETTINGS_PATH = os.path.realpath(os.path.dirname(__file__))

TEMPLATE_DIRS = (
    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
    os.path.join(SETTINGS_PATH, 'templates'),
)

СпасибоStackOverflow !!

1 голос
/ 12 февраля 2011

Я не уверен, какой пример, которому я следовал, в котором указан метод ярлыка render_to_response, требует передачи объекта запроса представлений, но это было так же просто, как изменить его на:

return render_to_response("template/apps.html",{"new_app_form":NewAppFormSet()})
0 голосов
/ 12 февраля 2011

что если вы попробуете

return render_to_response(request, "apps.html",{"new_app_form":NewAppFormSet})

вместо

return render_to_response(request, "template/apps.html",{"new_app_form":NewAppFormSet})
0 голосов
/ 12 февраля 2011

Из моих настроек.py:

BASE_DIR = os.path.dirname(__file__)

def RELATIVE_PATH(*args):
    return os.path.join(BASE_DIR, *args)

TEMPLATE_DIRS = (
    RELATIVE_PATH('template'),
)
0 голосов
/ 12 февраля 2011

В любом случае, вы, возможно, скопировали TEMPLATE_DIRS, который у вас есть сейчас, оставили ли вы значение по умолчанию ниже SETTINGS файла?

0 голосов
/ 12 февраля 2011

Попробуйте назначить SETTINGS_PATH с помощью os.path.realpath:

SETTINGS_PATH = os.path.realpath(os.path.dirname(__file__))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...