Как настроить django 1.8 для использования jinja2?

Итак, теперь, когда django официально поддерживает Jinja 2 в качестве механизма моделирования шаблонов, я надеялся, что это будет так же просто, как переключение строки в config. Но когда я это делаю, jinja не может найти мои шаблоны.

Мое понимание заключается в том, что я могу вручную настроить список каталогов для поиска шаблонов, но я бы хотел, чтобы он вел себя так же, как DTL ведет себя по умолчанию. (т. е. посмотрите в каталоге / templates). В основном, мое приложение структурировано так, как оно предлагается в официальном учебнике, и я хотел бы использовать jinja, не изменяя ничего другого. Является ли это возможным?

Вот как выглядит мой файл setup.py:

TEMPLATES = [ { 'BACKEND': 'django.template.backends.jinja2.Jinja2', 'APP_DIRS': True, }, ] 

Ошибка, которую я получаю, это TemplateDoesNotExist at /

и вот моя структура каталогов:

 mysite mysite myapp templates myapp index.html manage.py 

обратите внимание, что я надеюсь не использовать внешние модули.

edit: по запросу, вот код, вызывающий шаблон:

 def index(request): return render(request, 'myapp/index.html') 

4 Solutions collect form web for “Как настроить django 1.8 для использования jinja2?”

В папке шаблонов Jinja для приложений dirs по умолчанию используется jinja2 не стандартная папка templates .

Поэтому попробуйте следующую структуру каталогов, и Django найдет ваши шаблоны Jinja:

 mysite mysite myapp jinja2 myapp index.html manage.py 

Шаблон шаблона Jinja2 ищет папку jinja2 в каталогах приложений, а не templates . Это имеет преимущество предотвращения путаницы шаблонов DTL и Jinja2, особенно если вы включили в свой проект несколько шаблонов шаблонов.

Я бы рекомендовал придерживаться поведения по умолчанию и переименовать ваш каталог templates в jinja2 . Однако, если вы должны изменить его, вы можете создать собственный бэкэнд и установить app_dirname .

 from django.template.backends.jinja2 import Jinja2 class MyJinja2(jinja2): app_dirname = 'templates' 

Затем в настройке TEMPLATES используйте path.to.MyJinja2 вместо django.template.backends.jinja2.Jinja2 .

Другое дело, что render_to_response не может принимать context_instance для шаблонов jinja2

https://github.com/django-haystack/django-haystack/issues/1163

Я верю, но я могу ошибаться, но я думаю, что jinja2 не может использовать тот же каталог, что и шаблоны django. пытаться

 TEMPLATES = { 'BACKEND': 'django.template.backends.jinja2.Jinja2', 'DIRS': [os.path.join(PROJECT_ROOT, 'jinja2'),], 'APP_DIRS': True, } 

В папке шаблонов Jinja для приложений dirs по умолчанию используется jinja2, а не стандартная папка шаблонов.

Поэтому попробуйте следующую структуру каталогов, и Django найдет ваши шаблоны Jinja:

mysite mysite myapp jinja2 myapp
index.html manage.py

И вместо: return render (request, 'myapp / index.html) вы должны написать: return render (request,' index.html ')

  • Почему у Python есть «else» в «for-else» и «while-else»?
  • Как изменить все словарные ключи в цикле for с помощью d.items ()?
  • Пинг-серверы в Python
  • как найти самый частый элемент строки в numpy ndarray?
  • Как использовать потоки для ввода ввода с клавиатуры в python 3?
  • Невозможно установить `pip` для` python 3.3`, но отлично работает для `python 2.7`
  • что делает `super ()` в `__new__`
  • Python - переменная область
  •  
    Interesting Posts for Van-Lav

    Как запустить удаленную отладку с помощью PyCharm?

    При установке Google Assistant у меня ошибка «… googlesamples.assistant» – это пакет и не может выполняться напрямую … »

    Почему код c ++ содержится внутри функций?

    Python кодирует URL со специальными символами

    Регулярное выражение: начало матча или пробелы

    Невозможно загрузить изображение в моем шаблоне django.

    Как ADD акцентировать письмо?

    Проверка типов: итеративный тип, который не является строкой

    локальная переменная, на которую ссылается перед назначением в python, когда я устанавливаю ее глобально

    Python Azure SDK: использование list_blobs для получения более 5.000 результатов

    Активировать учетную запись службы из GCloud

    явно устанавливая таблицу стилей в python pyqt4?

    Как получить контекстные меню контекстного меню для кликов в заголовке QTableView?

    Отсутствуют значения веб-страницы при очистке данных с помощью BeautifulSoup python 3.6

    Передача переменных в Subprocess.Popen

    Python - лучший язык программирования в мире.