переопределение шаблонов по умолчанию django-allauth

Я использовал эту библиотеку социальной регистрации/регистрации django allauth для своего проекта. Как настроить шаблоны и формы по умолчанию, чтобы они выглядели лучше?


person user993563    schedule 24.02.2012    source источник
comment
Ознакомьтесь с этим подробным и простым ответом stackoverflow.com/a/62773971/8260949.   -  person Vivek Singh    schedule 07.07.2020


Ответы (7)


в последней версии all-auth на github есть свои шаблоны снаружи, а в Pypi нет, все, что вам нужно сделать, это клонировать репо в каталоге вашего проекта и переопределить шаблоны. Так просто, как, что.

person whatf    schedule 05.03.2012
comment
Клонирование репозитория считается очень плохой практикой. - person Red; 15.09.2013
comment
@Red Не могли бы вы уточнить? - person user; 06.06.2014
comment
Он, вероятно, имеет в виду, что локальное клонирование репо означает, что будет сложнее оставаться в курсе дальнейших обновлений для полной аутентификации. - person John Devor; 27.01.2015

Предполагая, что вы установили каталог шаблонов уровня проекта, используя настройку TEMPLATE_DIRS, например:

TEMPLATE_DIRS = [
    os.path.join(PROJECT_DIR, 'templates'),
]

Вы должны иметь возможность скопировать все папки, показанные здесь в этот каталог и отредактируйте их по своему усмотрению. Большинство шаблонов, похоже, заполняют блок {% block content %}, поэтому, вероятно, будет проще, если ваш шаблон site_base.html где-нибудь определит этот блок.

Если вы не установили TEMPLATE_DIRS, вы можете сделать то же самое, но скопировать папки шаблона в каталог templates одного из ваших приложений. Я предпочитаю устанавливать TEMPLATE_DIRS и хранить основные шаблоны сайта, такие как base.html, так как они на самом деле не принадлежат конкретному приложению, но это просто предпочтение; загрузчик шаблонов должен найти их в любом случае.

person Chris Lawlor    schedule 05.03.2012
comment
В текущей версии кажется, что у вас должен быть base.html (все еще с {% block content%}). - person Mark; 09.06.2015
comment
TEMPLATE_DIRS устарел и является частью ШАБЛОНОВ docs.djangoproject.com/en/1.8/ ссылка/шаблоны/обновление. Копирование шаблонов/чего-либо в пакет - плохая практика, и позже это навредит вам. - person Marc; 30.06.2016

В ваших взглядах:

from allauth.account.views import SignupView, LoginView


class MySignupView(SignupView):
    template_name = 'my_signup.html'


class MyLoginView(LoginView):
    template_name = 'my_login.html'

Обратите внимание на примеры и документы для структурирования собственных шаблонов.

Посмотрите эту часть в примерах шаблонов:

<form id="signup_form" method="post" action="{% url 'account_signup' %}">

Мне пришлось удалить URL-ссылку, чтобы она правильно работала в моем собственном шаблоне:

<form id="signup_form" method="post" action="">'
person Adam Starrh    schedule 06.04.2016
comment
Убедитесь, что вы указываете свои URL-адреса на эти замещающие представления. - person Adam Starrh; 06.09.2018
comment
Это самое простое решение, которое у меня было для шаблона переопределения allauth. - person keisaac; 15.01.2020

Используйте ту же логику, что и для переопределения шаблонов администратора.

person Burhan Khalid    schedule 06.03.2012
comment
Независимо от того, идет ли ссылка на документы версии 1.9 или 1.10, приятно читать. В этом каталоге администратора создайте подкаталоги, названные в честь вашего приложения. Назовите каталоги, во множественном числе, после вашего приложения, в единственном числе? - person Mike O'Connor; 06.02.2017

Взгляните на приложение example; в нем есть папка templates, в которой указано расположение необходимых шаблонов

person Timmy O'Mahony    schedule 24.02.2012
comment
хорошо, что я сделал для реализации библиотеки, добавил site_base.html в папку моих шаблонов с двумя блоками ‹!doctype html› ‹head› ‹title› {% block head_title %} {% endblock %} ‹/title› ‹/ head› ‹body› ‹!-- сделано для django-allauth --› {% block body %}{% endblock %} ‹/body› ‹/html› как редактировать или переопределять встроенные шаблоны, в каком каталоге я нахожу их внутри моего virtualenv? - person user993563; 25.02.2012

Все это хорошие предложения.

Большинство из них должны работать.

Единственное, что сработало для меня, это включить мои собственные шаблоны в "project/app/templates/account/" и убедиться, что "django-allauth" указан в INSTALLED_APPS после моего собственного приложение.

Я обнаружил это здесь.

person trubliphone    schedule 13.10.2017

Чтобы настроить django-allauth после его установки, скопируйте его из пакетов сайта и вставьте в каталог приложений вашего проекта. Таким образом, приложение allauth по умолчанию и его шаблоны будут использоваться в приложении allauth вашего проекта. Затем, если вы хотите изменить signup.html в socialaccount, перейдите в apps\allauth\templates\socialaccount\signup.html и измените его, редактирование внутри тега «блокировать содержимое»:

{% block content %}
    // your customized html for signup form
{% endblock %}

Надеюсь, что это поможет вам.

person Zubair Afzal    schedule 05.03.2012
comment
Я думаю, это должно сработать. Потому что сначала django просматривает шаблоны внутри приложения (apps\my_app\templates\my_app), затем в каталоге шаблонов проектов (templates\my_app), а затем переходит к вашим сайтам-пакетам. Вы пытались изменить html в шаблонах allauth сайтов-пакетов? - person Zubair Afzal; 05.03.2012
comment
Не думаю, что копирование - хороший способ. Гораздо лучше git clone в папку проекта, чем дублировать код. - person boldnik; 07.06.2013
comment
Копирование шаблонов было бы предпочтительнее. В моем случае я бы предпочел просто скопировать шаблоны, чем клонировать репо со всем кодом, который мне не нужно изменять. - person Ron E; 09.02.2014