Как редактировать шаблоны django-allauth по умолчанию?

Я использую Django 1.10, и я хочу добавить приложение allauth для входа в систему, входа и т. д. На мой сайт. Я установил allauth из pip и попытался поместить шаблоны из репозитория allauth в папку "шаблоны" и вызвать их, но я не знаю, как это сделать.

6 ответов


правильный ответ можно найти здесь:https://stackoverflow.com/a/31282443/4992248

  1. создать yourproject/templates/allauth/account/ и вставьте сюда все шаблоны, которые вам нужно отредактировать из /myproject/Lib/site-packages/allauth/templates/account.

Если вам нужно внести изменения для socialaccount шаблоны, создать также yourproject/templates/allauth/socialaccount/

  1. редактировать 'DIRS' на settings.py как 'DIRS': [os.path.join(BASE_DIR, 'templates'), os.path.join(BASE_DIR, 'templates', 'allauth')],

в конце он должен выглядеть как-то это:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates'), os.path.join(BASE_DIR, 'templates', 'allauth')],
        'APP_DIRS': True,
        'OPTIONS': {
            'debug': False,
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.template.context_processors.media',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
  1. вы никогда не должны делать никаких изменений кода в /Lib/site-packages/*, потому что все изменения теряются после обновления пакета.

похоже, что документация модуля устарела. Для Django 1.10 вы должны сделать следующее:

  • скачать модуль с pip
  • добавьте в INSTALLED_APPS (/settings.py файл)

'django.contrib.sites', # first place
'allauth',  # after your modules declarations
'allauth.account',
'allauth.socialaccount',
  • добавить бэкэнды объявления и другой материал, необходимый allauth
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
)
SITE_ID = 1
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_USERNAME_REQUIRED = True
  • кажется, что для Django 1.10 не требуется для изменения раздела шаблонов (django-allauth==0.28.0). Вы можете проверить версии модулей с помощью команды" pip freeze".

  • создайте искусственный модуль для переопределения шаблонов; например, мой проект называется irj_app, и я добавил новое приложение под названием _shared, тогда у меня есть следующая структура и добавьте ее в INSTALLED_APPS перед объявлениями "allauth":

irj_app / _shared

  • я создал каталог шаблонов внутри папки" _shared", и я добавил файл под названием " base.html", который переопределяет шаблон allauth. я обнаружил, что django-allauth создает шаблон, который переопределяет макет, который вы сделали раньше, затем вам нужно перехватить шаблоны django-allauth, чтобы изменить это поведение. Также можно переопределить любой шаблон этого механизма проверки подлинности. Например у меня есть:

irj_app / _shared / templates / base.html

irj_app / _shared / templates / account / base.html

irj_app / _shared / templates / account / signup.html

irj_app / _shared / templates / _shared / adminlte-template / ... (template for other modules)

надеюсь, что это помогает


Попробуйте Это:

создать счета каталог в шаблоне вашего приложения dir так, что он выглядит как ниже

yourppname/templates / account

файлы

yourppname / шаблоны / учетная запись / логин.HTML-код

yourppname / шаблоны / учетная запись / Регистрация.HTML-код

и добавьте ниже к вашему шаблону DIRS Не забудьте изменить yourappname на ваше приложение имя

os.путь.Регистрация (BASE_DIR, 'yourappname', 'templates')

TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [os.path.join(BASE_DIR, 'yourappname', 'templates')],
    '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',
        ],
    },
},
]

шаблоны Allauth можно переопределить так же, как и обычные методы переопределения шаблонов.

  1. установить шаблон каталога

TEMPLATE_DIRS = ( os.path.join(BASE_DIR,'templates'), os.path.join(BASE_DIR,'templates'))

  1. ваш каталог шаблонов будет находиться в каталоге проекта. Зайдите в каталог шаблонов и create a directory named allauth, inside allauth create a template directory and inside that create a directory accounts

  2. создайте html-файлы с тем же именем, что и шаблоны allauth. См.репозиторий allauth github для получения дополнительной информации о шаблоне.


в django-allauth==0.36.0

  • предположим, вы хотите настроить страницу входа в систему.
  • не нужно менять настройки шаблонов
  • просто создайте папку с именем account в папке шаблонов проектов, а затем:
  • клонировать проект git clone https://github.com/pennersr/django-allauth cd django-allauth/allauth/templates/account
  • базовая копия.HTML и логин.html в созданную папку аккаунта
  • Я пробовал, это работает.

Официальный Сайт


Ну, я просто смог это сделать.

Я не знал, где были эти шаблоны, но я обнаружил, что в моем случае (я использую виртуальный env):

Envs/myproject/Lib/site-packages/allauth/templates

Я изменил базу.html и добавил мою статическую папку со всеми моими загрузочными материалами и jquery в настройки в файле:

app_settings.py

и добавил Это.

...
import os

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

STATIC_URL = '/static/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]

и это все.

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