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 изменил логику с шаблонами? В любом случае, проблема решена.

Другие вопросы по тегам