Как использовать более одного файла _base.html с помощью django-two-factor-auth?
Библиотеке Django-two-factor-auth требуется файл _base.html для настройки стиля для интеграции.
Мне нужно, чтобы база для моей страницы входа отличалась от базы для двух других страниц факторов. Как я могу использовать два разных файла _base.html вместо использования одного и того же _base.html для всех двух URL-адресов факторов?
2 ответа
В каталоге вашего проекта добавьте папку с именем
templates
, того же уровня, что и ваши приложения, например
users
,
blogs
и т.д. Внутри него создайте еще одну папку для
two_factor
. Внутри этой папки поместите измененный
base.html
.
Если каким-то образом вы получите сообщение об ошибке, в вашем
settings.py
под
TEMPLATES = [
. Заменить
'DIRS': [],
с участием
'DIRS': [os.path.join(BASE_DIR, 'templates')], # in django2
или же
'DIRS': [BASE_DIR.joinpath('templates')],# in django3
Обновление после собственного ответа op
Если ты хочешь иметь
two_factor/templates/two_factor/core/login.html
используй свой собственный
base.html
, вы должны следовать тому, что я упомянул выше, у вас будет
templates/two_factor/core/login.html
. Обратите внимание, что
templates
находится на том же уровне каталога, что и другие
apps
. в
templates
папка, создать
two_factor
папку, затем внутри нее сгенерируйте
core
папка, затем внутри нее сгенерируйте
login.html
. Теперь вы можете изменить его как хотите.
Причина, по которой вы хотите переопределить, но не изменять что-либо в каталоге пакета, заключается в том, что при обновлении пакета вам придется снова вносить изменения вручную.
Причина, по которой описанный выше подход работает, заключается в том, что мы положили
'DIRS': [os.path.join(BASE_DIR, 'templates')]
в настройках Django сначала будет искать шаблоны в этой папке. Подробное описание этого метода находится здесь. Переопределение из каталога шаблонов проекта.
Мне удалось решить эту проблему, вручную изменив следующую строку в каталоге пакета
two_factor/templates/two_factor/core/login.html
ссылаясь на
_base.html
файл в базовый шаблон моей страницы входа.
{% extends "two_factor/_base_focus.html" %}
Затем я продолжил использовать
_base.html
для настройки двух других страниц факторов.