Джанго-Аллах загружает неверный шаблон base.html

Я пытался заставить Джанго-Аллаута работать уже пару дней, и я наконец узнал, что происходит.

Вместо загрузкиbase.html шаблон, который устанавливается с помощью django-allauth, приложение загружаетbase.html файл, который я использую для остальной части моего сайта.

Как мне сказать django-allauth использовать шаблон base.html вvirtualenv/lib/python2.7/sitepackages/django-allauth каталог вместо моегоproject/template каталог?

Ответы на вопрос(5)

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

Действительно, самый простой способ справиться с этой ситуацией, особенно на основе предоставленных ответов, - просто переместить приложение allauth и связанные с ним приложения в конец вашегоINSTALLED_APPS список в вашемsettings.py файл. Джанго найдет вашbase.html шаблон, прежде чем он находит другойbase.html шаблон в других приложениях, перечисленных ниже.

Задача решена.

django-allauth шаблоны вроде бы расширяются (account/base.htmlпример), который расширяется.base.html

Так скопируйтеbase.html напримерmyapp/templates/account/base.htmlи убедитесь, чтоmyapp загружает доdjango-allauth (поместив его выше вINSTALLED_APPS).

Теперь шаблоны авторизации Django расширят вашaccount/base.html, который будет с.django-allauthbase.html

Это'не идеально, так какdjango-allauthbase.html может обновить и тыпропущу эти обновления. Но это кажется лучше, чем переименование всего вашего импорта или изменениеdjango-allauth код.

Обратите внимание, что вы также можете просто поставить{% block content %} в вашемbase.html вокруг содержания, а затемdjango-allauth будет использовать этот стиль, который во многих случаях кажется хорошим.

Два года спустя это продолжает оставаться проблемой, и в принятом ответе отсутствует какая-то новая информация.

НаGitHub Я обнаружил, что все шаблоны allauth являются производными от account / base.html, который происходит от base.html. Мое решение было:

Вvirtualenv/lib/python2.7/sitepackages/django-allauth/templates, скопируйте все содержимоеbase.html заменить все вaccount/base.html (т.е. заменить{% extends 'base.html' %} заявление)Удалить Аллаутаbase.html, Теперь это избыточно.

Готово!

 Mark12 июн. 2015 г., 15:38
Пока вы не установите свой проект на другой машине ...
 ZG10115 июн. 2015 г., 02:42
Правда. Я не'не понимаю такие вещи в то время
Решение Вопроса

Если не вызывается напрямую, вашbase.html является расширением шаблонов, которые вы определяете.

Например, если вы визуализируете шаблон с именемPage.html - на вершине у вас будет.{% extends "base.html" %}

Когда определено как указано выше,base.html находится на пути, который вы определили в вашемsettings.py подTEMPLATE_DIRS = () - который, по вашему описанию, определяется как.project/template

Лучше всего скопировать Джанго Аллаутаbase.html файл в определенныйTEMPLATE_DIRS местоположение, переименуйте его вallauthbase.html, затем расширьте ваши шаблоны, чтобы включить его вместо базы по умолчанию через.{% extends "allauthbase.html" %}

В качестве альтернативы вы можете добавить подпапку к вашему шаблону, напримерproject/template/allauthПоместите Аллаутаbase.html там, а затем использовать.{% extends "allauth/base.html" %}

Allauth пытается продлитьmyproject/templates/base.html, Самые простые способы - это двигатьсяbase.html вmyproject/templates/site/ чтобы получитьmyproject/templates/site/base.html или просто переименоватьbase.html

Ваш ответ на вопрос