问题描述
我正在使用 Django-Baton,它围绕核心 Django 模板文件注入 CSS 和 JS 样式和实用程序,以及 Django-AllAuth 以实现更强大的身份验证和帐户访问功能。
我正在使用 documented method 将管理员登录重定向到 AllAuth 登录页面:
from django.contrib import admin
from django.contrib.auth.decorators import login_required
admin.site.login = login_required(admin.site.login)
我应该将其应用于“AdminSite 的每个实例”。
网址:
from baton.autodiscover import admin
from django.urls import path,include
urlpatterns = [
path("",admin.site.urls),path("baton/",include("baton.urls")),path("integrations/",include("integrations.urls")),path("queryfilter/",include("core.urls")),path("accounts/",include("allauth.urls")),]
如果没有 baton.autodiscover
,http://127.0.0.1:8000/
会根据需要转发到 accounts/login
,但如果存在自动发现则不然。
INSTALLED_APPS = [
"dal","dal_select2","dal_queryset_sequence","baton","django.contrib.admin","django.contrib.auth","django.contrib.contenttypes","django.contrib.sessions","django.contrib.messages","django.contrib.staticfiles","django.contrib.sites",# required for allauth
"users","core","integrations","allauth","allauth.account","allauth.socialaccount","baton.autodiscover",]
想知道是否需要子类化 django.contrib.admin
并在 baton.autodiscover
之前以某种方式应用 auth 装饰器,但不确定如何/在何处执行此操作。
感谢您的投入,我对 Django 还很陌生,所以也感谢您的耐心等待。
解决方法
django.contrib.admin.AdminSite
是 baton.autodiscover.admin
(source) 的父类。
您必须在 baton.autodiscover.admin
中装饰 urls.py
。
网址:
from baton.autodiscover import admin
from django.urls import path,include
admin.site.login = login_required(admin.site.login)
urlpatterns = [
path("",admin.site.urls),path("baton/",include("baton.urls")),path("integrations/",include("integrations.urls")),path("queryfilter/",include("core.urls")),path("accounts/",include("allauth.urls")),]