模块 "mymodule" 未定义 "MyBackend" 认证后端

2 投票
1 回答
1233 浏览
提问于 2025-04-16 01:58

我正在尝试为我正在开发的Django项目使用一个自定义的认证后端。我的后端是基于一篇文章中的LDAPBackend,这篇文章讲的是Django中的LDAP认证与后端

当我尝试登录时,出现了以下错误:

ImproperlyConfigured at /admin/ 
Module "challenge.backends" does not define a "LDAPBackend" authentication backend

我的项目叫做“challenge”。里面有一个子目录“backends”,这个目录里有两个文件,__init__.pyLDAPBackend.py

我的settings.py文件配置成这样来使用这个后端:

AUTHENTICATION_BACKENDS = (
    'challenge.backends.LDAPBackend',
    'django.contrib.auth.backends.ModelBackend',
)

我可以通过运行python manage.py shell来手动导入这个模块,然后用from challenge.backends import LDAPBackend来引入它。

现在我不太确定该检查什么,因为看起来一切都在正确的位置。

1 个回答

6

你导入的方式不对。你导入的是一个模块,而不是一个类。这就是为什么命令行可以让你导入,但Django会报错的原因。

你应该使用 challenge.backends.LDAPBackend.LDAPBackend 这个方式。

另外,给模块命名的时候遵循PEP8规范是个好主意,这样你就不会再搞混了。模块的名字应该全部用小写字母,不能有空格、下划线之类的。

撰写回答