gpt4 book ai didi

python - 覆盖 django 管理员身份验证

转载 作者:太空宇宙 更新时间:2023-11-03 21:14:21 25 4
gpt4 key购买 nike

我正在使用 django 2.1.5。我想覆盖 django 管理员身份验证过程,目标是允许 is_staff=False 的用户能够登录。因此,我试图覆盖 AdminSite 并遵循此文档( https://docs.djangoproject.com/en/2.1/ref/contrib/admin/#overriding-default-admin-site )。这是到目前为止的代码:

<小时/>

my_app/forms.py

from django.contrib.admin.forms import AdminAuthenticationForm

class CustomAdminAuthenticationForm(AdminAuthenticationForm):

def confirm_login_allowed(self, user):
super().confirm_login_allowed(user) # i removed is_staff checking here
<小时/>

my_app/admin.py

class MyAdminSite(admin.AdminSite):
login_form = CustomAdminAuthenticationForm

def has_permission(self, request):
return request.user.is_active # i also removed request.user.is_staff here
<小时/>

my_app/apps.py

from django.contrib.admin.apps import AdminConfig

class MyAdminConfig(AdminConfig):
default_site = 'my_app.admin.MyAdminSite'
<小时/>

root/settings.py

INSTALLED_APPS = [
'my_app.apps.MyAdminConfig',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',

'my_app',
]
<小时/>

当我尝试运行服务器时,出现错误:

ImportError: Module "my_app.admin" does not define a "MyAdminSite" attribute/class
<小时/>

我认为我已经正确指向 my_app/apps.py 中的default_site。我怎样才能解决这个问题?除了覆盖 AdminSite 之外,还有其他方法可以完成我的目标吗?谢谢。

最佳答案

这看起来比只为每个用户分配员工角色要麻烦得多。 Django docsUser 中的 is_staff 字段定义为 bool 值,“[d]指定该用户是否可以访问管理站点”。这不就是你想要的吗?

换句话说:如果您希望所有用户都能够访问管理站点,您还需要什么 is_staff 来阻止您将所有用户变成员工?

关于python - 覆盖 django 管理员身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54831898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com