如何解决将 Allauth login_required 装饰器添加到 Baton.Autodiscover Admin 子类
我正在使用 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")),]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。