Helpers - компьютеры, интернет, программирование

TemplateDoesNotExist — файл существует, проблем с правами нет

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

Шаблон не существует

...
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. Я в растерянности...


  • Случайно нет ли тега шаблона include в apps.html, который ссылается на несуществующий шаблон? 12.02.2011
  • Хм, я расширяю другой шаблон - я пошел дальше и удалил его (а также заменил весь шаблон некоторой базовой разметкой), все равно не повезло. Зато отличный улов, спасибо. 12.02.2011

Ответы:


1

У меня была очень похожая проблема, которая сводила меня с ума. Оказывается, в книге, которую я использовал для изучения Python/Django, не говорилось, что я должен явно указать каталог шаблонов в settings.py. Очень запутанно. Я использую Python 2.6 и Django 1.3.1 - возможно, предыдущая версия автоматически нашла каталог шаблонов. В любом случае, после того, как я целый день рвал на себе волосы и много читал на этом сайте, я понял, что мне нужно заменить назначение 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!!

30.12.2011

2

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

return render_to_response("template/apps.html",{"new_app_form":NewAppFormSet()})
12.02.2011
  • Возможно, следил за официальной документацией: http://docs.djangoproject.com/en/dev/topics/http/shortcuts/ . Но официальные документы начинаются с render, а не render_to_response. Что не обязательно очевидно для людей, которые быстро запоминают порядок аргументов. 09.04.2011

  • 3

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

    SETTINGS_PATH = os.path.realpath(os.path.dirname(__file__))
    
    12.02.2011
  • Я не уверен, какой пример я использовал, в котором указанный метод быстрого доступа render_to_response требует передачи объекта запроса представлений, но это было так же просто, как изменить его на: return render_to_response("template/apps.html",{"new_app_form":NewAppFormSet}) 12.02.2011

  • 4

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

    12.02.2011

    5

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

    BASE_DIR = os.path.dirname(__file__)
    
    def RELATIVE_PATH(*args):
        return os.path.join(BASE_DIR, *args)
    
    TEMPLATE_DIRS = (
        RELATIVE_PATH('template'),
    )
    
    12.02.2011

    6

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

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

    вместо

    return render_to_response(request, "template/apps.html",{"new_app_form":NewAppFormSet})
    
    12.02.2011
    Новые материалы

    Интуитивное понимание тензоров в машинном обучении
    Тензор является важной концепцией во многих научных областях, таких как математика, физика, обработка сигналов и компьютерное зрение, и это лишь некоторые из них. В математике тензор — это..

    Использование машинного обучения для диагностики болезни Альцгеймера, часть 4
    Маркеры семантической согласованности для ранней диагностики болезни Альцгеймера (arXiv) Автор: Давиде Колла , Маттео Дельсанто , Марко Агосто , Бенедетто Витиелло , Даниэле Паоло Радичони..

    Почему объяснимость так важна прямо сейчас?
    По мере того, как системы искусственного интеллекта и инструменты на основе машинного обучения распространяются в нашей повседневной жизни, как практики, так и критики все чаще заявляют о..

    Анимированный математический анализ
    Использование Manim для создания математических анимированных визуализаций Визуализация данных помогает понять скрытые закономерности в данных, которые невозможно визуализировать..

    Создание простого слайдера изображений с помощью JavaScript
    Узнайте, как создать базовый слайдер изображений с помощью HTML, CSS и JavaScript. Введение В этом уроке мы создадим удобный слайдер изображений, используя JavaScript, HTML и CSS. Ползунок..

    Создание базы данных с помощью супергероя «Python»
    В этом посте мы узнаем, как создать «базу данных SQLite с помощью модуля python sqlite3, создав простую функцию входа и регистрации. Готовы ли вы к этому путешествию? Если да , давайте приступим..

    ИИ для чайников: руководство для начинающих по пониманию будущего технологий
    Вы чувствуете, что остались позади в мире ИИ? Не волнуйтесь, вы не одиноки! Со всей этой шумихой вокруг искусственного интеллекта может быть трудно понять, с чего начать. Но не позволяйте сленгу..