Замените страницу входа в систему администратора Django

Мне нужно заменить страницу входа в Django Admin. Причина в том, что я добавил некоторую дополнительную аутентификацию на своей собственной странице входа, однако я не знаю, как переопределить вход на сайте администратора.

Вот решение. Внутри urls.py добавьте путь к новой странице входа в систему над URL-адресами ваших администраторов следующим образом

path('admin/login/', login_view, name='new_admin_login'),  # login_view is the custom login view
path('admin/', admin.site.urls),

Создание пользовательского AdminSite - это способ Django делать такие вещи. В частности, в вашем случае установите AdminSite.login_form

from django.contrib.admin import AdminSite
from django.contrib.auth.forms import AuthenticationForm
from django.urls import path


class CustomAuthenticationForm(AuthenticationForm):
    # override the methods you want
    ...


class CustomAdminSite(AdminSite):
    login_form = CustomAuthenticationForm


admin_site = CustomAdminSite()

urlpatterns = [
    path("admin/", admin_site.urls),
]
Вернуться на верх