TemplateNotFound после установки django-сообщений и django-почтальона
Я получаю TemplateNotFound после того, как я установил django-почтальон и django-сообщения. Я, очевидно, установил их отдельно - сначала django-почтальон, а затем django-сообщения. Это так просто, и все же я часами пытался решить эту проблему.
Я использую Django 1.8, свежую базовую установку с использованием pip. Затем я установил два вышеуказанных пакета. Часть ШАБЛОНОВ моего файла settings.py выглядит следующим образом:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
os.path.join(BASE_DIR, 'templates'),
#os.path.join(BASE_DIR, 'templates/django_messages'),
],
'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',
],
},
},
]
В моем кортеже INSTALLED_APPS я также установил вышеупомянутые пакеты.
Вот мое дополнение к urls.py:
url(r'^messages/', include('django_messages.urls')),
Никаких других изменений в систему внесено не было, но когда я захожу в /messages, я получаю следующее сообщение об ошибке:
TemplateDoesNotExist at /messages/inbox/
django_messages/inbox.html
Request Method: GET
Request URL: http://localhost:8000/messages/inbox/
Django Version: 1.8.3
Exception Type: TemplateDoesNotExist
Exception Value:
django_messages/inbox.html
Exception Location: /projects/.virtualenvs/blatter/lib/python2.7/site-packages/django/template/loader.py in render_to_string, line 138
Python Executable: /projects/.virtualenvs/blatter/bin/python
Python Version: 2.7.6
2 ответа
Проблема заключается в том, что он происходит от base.html сайта. Это также упоминается в документации почтальона: - https://django-postman.readthedocs.org/en/latest/quickstart.html
The postman/base.html template extends a base.html site template, in which some blocks are expected:
title: in <html><head><title>, at least for a part of the entire title string
extrahead: in <html><head>, to put some <script> and <link> elements
content: in <html><body>, to put the page contents
postman_menu: in <html><body>, to put a navigation menu
Возможное решение можно найти здесь: - django-почтальон расширяет base.html, который не существует
Проблема была решена для django-сообщений после просмотра вызываемого шаблона и изменения параметра extends/ наследования.
Файл, который вызывался, inbox.html, унаследовал "django_messages / base.html"... который работал нормально. Затем "base.html" унаследован от "base.html", поэтому здесь возникла некоторая циклическая логика, вызывающая ошибку. Это по умолчанию и не было добавлено мной. Когда я удалил объявление extends/ наследования из "base.html", чтобы оно не наследовало от себя, django-сообщения работали.
Возможно, Django 1.8 изменил логику с шаблонами? В любом случае, проблема решена.