You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django Admin登录Allauth解决方案代码放置位置及生效方法咨询

Django-Allauth 给Django Admin登录页添加登录限制的代码部署方案

代码放置位置

把官方提供的代码放在任意一个已添加到INSTALLED_APPS的应用的admin.py文件中即可,比如项目根目录下的admin.py(没有就新建),或者你主应用(如myapp)里的admin.py。

生效原理

Django启动时会自动加载所有INSTALLED_APPS下的admin.py文件,这段代码会覆盖默认AdminSite实例(admin.site)的login方法,通过staff_member_required装饰器强制用户先通过Allauth的登录页(由settings.LOGIN_URL指定)完成登录,且必须是staff权限用户才能访问Admin登录页面,以此间接解决Admin登录页无尝试次数限制的问题。

自定义AdminSite的情况

如果你自己创建了多个AdminSite实例(比如多后台站点),需要在每个自定义AdminSite的定义代码之后,对其login方法执行同样的装饰器处理,示例如下:

# 自定义AdminSite示例
from django.contrib.admin import AdminSite

class MyCustomAdminSite(AdminSite):
    site_header = "自定义后台"

custom_admin_site = MyCustomAdminSite(name='custom_admin')

# 给自定义实例添加登录限制
from django.conf import settings
from django.contrib.admin.views.decorators import staff_member_required
custom_admin_site.login = staff_member_required(
    custom_admin_site.login, login_url=settings.LOGIN_URL
)

官方代码示例(用于默认AdminSite)

from django.conf import settings
from django.contrib import admin
from django.contrib.admin.views.decorators import staff_member_required

admin.site.login = staff_member_required(
    admin.site.login, login_url=settings.LOGIN_URL
)

内容的提问来源于stack exchange,提问作者Bas W

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 03:22:38