首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ldapdb:"'NoneType‘对象不可调用“当向django添加ldap数据库时

ldapdb:"'NoneType‘对象不可调用“当向django添加ldap数据库时
EN

Stack Overflow用户
提问于 2017-05-10 15:47:03
回答 1查看 306关注 0票数 0

运行django 1.11并尝试使用django模块ldapdb连接LDAP服务器(django-ldapdb=0.8.0):

代码语言:javascript
复制
DATABASES = {
    'ldap': {
        'ENGINE': 'ldapdb.backends.ldap',
        'NAME': 'ldap://192.168.1.39/',
    },
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'prot',                      # Or path to database file if using sqlite3.
        'USER': 'prot',                      # Not used with sqlite3.
        'PASSWORD': 'geheim',                  # Not used with sqlite3.
        'HOST': 'localhost',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '5432',                      # Set to empty string for default. Not used with sqlite3.
    },
}

DATABASE_ROUTERS = ['ldapdb.router.Router']

但是,我在ldapdb代码中得到了一个错误。

代码语言:javascript
复制
Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x7f4ba61ff840>
Traceback (most recent call last):
  File "/home/nfs/ruben/Projects/prot-zboss/venv/lib/python3.4/site-packages/django/utils/autoreload.py", line 227, in wrapper
    fn(*args, **kwargs)
  File "/home/nfs/ruben/Projects/prot-zboss/venv/lib/python3.4/site-packages/django/core/management/commands/runserver.py", line 125, in inner_run
    self.check(display_num_errors=True)
  File "/home/nfs/ruben/Projects/prot-zboss/venv/lib/python3.4/site-packages/django/core/management/base.py", line 359, in check
    include_deployment_checks=include_deployment_checks,
  File "/home/nfs/ruben/Projects/prot-zboss/venv/lib/python3.4/site-packages/django/core/management/base.py", line 346, in _run_checks
    return checks.run_checks(**kwargs)
  File "/home/nfs/ruben/Projects/prot-zboss/venv/lib/python3.4/site-packages/django/core/checks/registry.py", line 81, in run_checks
    new_errors = check(app_configs=app_configs)
  File "/home/nfs/ruben/Projects/prot-zboss/venv/lib/python3.4/site-packages/django/core/checks/model_checks.py", line 30, in check_all_models
    errors.extend(model.check(**kwargs))
  File "/home/nfs/ruben/Projects/prot-zboss/venv/lib/python3.4/site-packages/django/db/models/base.py", line 1284, in check
    errors.extend(cls._check_long_column_names())
  File "/home/nfs/ruben/Projects/prot-zboss/venv/lib/python3.4/site-packages/django/db/models/base.py", line 1699, in _check_long_column_names
    connection = connections[db]
  File "/home/nfs/ruben/Projects/prot-zboss/venv/lib/python3.4/site-packages/django/db/utils.py", line 212, in __getitem__
    conn = backend.DatabaseWrapper(db, alias)
  File "/home/nfs/ruben/Projects/prot-zboss/venv/lib/python3.4/site-packages/ldapdb/backends/ldap/base.py", line 187, in __init__
    super(DatabaseWrapper, self).__init__(*args, **kwargs)
  File "/home/nfs/ruben/Projects/prot-zboss/venv/lib/python3.4/site-packages/django/db/backends/base/base.py", line 96, in __init__
    self.client = self.client_class(self)
TypeError: 'NoneType' object is not callable

ldapdb 0.8是最后一个版本,支持django >=1.10。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-14 11:49:56

更新:

django-ldapdb版本必须至少为0.9。

代码语言:javascript
复制
pip install django-ldapdb>=0.9

旧岗位:

django-ldapdb目前只支持Django版本的1.8-1.10。

因此,解决方案实际上很简单:

代码语言:javascript
复制
pip install Django==1.10 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43897271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档