模块 "mymodule" 未定义 "MyBackend" 认证后端
我正在尝试为我正在开发的Django项目使用一个自定义的认证后端。我的后端是基于一篇文章中的LDAPBackend,这篇文章讲的是Django中的LDAP认证与后端。
当我尝试登录时,出现了以下错误:
ImproperlyConfigured at /admin/
Module "challenge.backends" does not define a "LDAPBackend" authentication backend
我的项目叫做“challenge”。里面有一个子目录“backends”,这个目录里有两个文件,__init__.py
和LDAPBackend.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规范是个好主意,这样你就不会再搞混了。模块的名字应该全部用小写字母,不能有空格、下划线之类的。