使用DJANGO的LDAP(2,'没有这样的文件或目录')错误

时间:2017-06-30 19:10:10

标签: python django django-models ldap ldap-query

我正在实现一个Django应用程序,我正在尝试从LDAP服务器获取数据。 这是我在views.py中的代码。我已经提供了下面的所有必要信息,但我面临着(2,'没有这样的文件或目录')错误。我在这里失踪了什么?

                LDAP_USERNAME = ""
                LDAP_PASSWORD = ""
                LDAP_BASEDN = ""
                try:
                    l = ldap.initialize('')
                    l.protocol_version = ldap.VERSION2
                    l.simple_bind_s(LDAP_USERNAME, LDAP_PASSWORD)
                    search_filter = "(cn=*)"
                    search_attribute = None
                    search_scope = ldap.SCOPE_SUBTREE
                    ldap_result_id = l.search(LDAP_BASEDN, search_scope, search_filter, search_attribute)
                    result_set = []
                    while 1:
                        result_type, result_data = l.result(ldap_result_id, 0)
                        if (result_data == []):
                            break
                        else:
                            if result_type == ldap.RES_SEARCH_ENTRY:
                                result_set.append(result_data)
                    print result_set
                except ldap.LDAPError, e:
                    print e

错误追溯:

Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/core/handlers/exception.py", line 41, in inner
    response = get_response(request)
  File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/core/handlers/base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/core/handlers/base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/////views.py", line 43, in index
    l = ldap.initialize('xyz')
  File "/Library/Python/2.7/site-packages/ldap/functions.py", line 94, in initialize
    return LDAPObject(uri,trace_level,trace_file,trace_stack_limit)
  File "/Library/Python/2.7/site-packages/ldap/ldapobject.py", line 79, in __init__
    self._l = ldap.functions._ldap_function_call(ldap._ldap_module_lock,_ldap.initialize,uri)
  File "/Library/Python/2.7/site-packages/ldap/functions.py", line 66, in _ldap_function_call
    result = func(*args,**kwargs)
LDAPError: (2, 'No such file or directory')

1 个答案:

答案 0 :(得分:0)

ldap.initialize()需要LDAP源的正确URL。我有同样的问题,LDAPError: (0, 'Error') and LDAPError: (2, 'No such file or directory') with flask帮了我。

试试ldap.initialize(<protocol>://<host>:<port>)。默认protocolldap,默认端口为389