django的ldap数据库后端

django-ldapdb2的Python项目详细描述


这个叉子已经停了!

django-ldapdb2是django的ldap数据库后端,允许操作 通过django模型的ldap条目。

这是拉斐尔·巴罗瓦创作的django-ldapdb叉子。

它支持大多数与django模型相同的api:

  • MyModel.objects.create()
  • MyModel.objects.filter(x=1, y__contains=2)
  • 全面的管理支持和浏览

django-ldapdb支持django版本1.11/2.0和python 2.7/3.4/3.5/3.6。

Django LDAPDB和Django-LDAPDB2之间的差异

  • TextField as multi-line CharField
  • DateField can be compared with gte, lte and in operators
  • Allows modification of objects found further down in the tree.

最初,上游是无响应的,因此django ldapdb是分叉的。它 似乎他们正在研究这些问题,所以django-ldapdb2可能会 很快就走了。

安装django-ldapdb2

Linux

使用pip:pip install django-ldapdb2

您可能还需要发行版中通常的LDAP包,通常命名为openldapldap-utils

窗口

django-ldapdb2取决于python ldap<;https://pypi.python.org/pypi/python ldap>;项目。 要么跟着its Windows installation guide, 或者从https://www.lfd.uci.edu/~gohlke/pythonlibs/#python-ldap安装预构建版本 (选择与python/windows组合匹配的.whl文件,并使用pip install python-ldap-3...whl安装它)。

然后还可以使用

安装django-ldapdb2

pip install django-ldapdb2

使用django ldapdb

将以下内容添加到您的settings.py

DATABASES={'ldap':{'ENGINE':'ldapdb.backends.ldap','NAME':'ldap://ldap.nodomain.org/','USER':'cn=admin,dc=nodomain,dc=org','PASSWORD':'some_secret_password',},'default':{'ENGINE':'django.db.backends.sqlite3','NAME':os.path.join(BASE_DIR,'db.sqlite3'),},}DATABASE_ROUTERS=['ldapdb.router.Router']

如果要访问应用程序中的posixgroup条目,可以添加 对您的models.py

fromldapdb.models.fieldsimportCharField,IntegerField,ListFieldimportldapdb.modelsclassLdapGroup(ldapdb.models.Model):"""
    Class for representing an LDAP group entry.
    """# LDAP meta-database_dn="ou=groups,dc=nodomain,dc=org"object_classes=['posixGroup']# posixGroup attributesgid=IntegerField(db_column='gidNumber',unique=True)name=CharField(db_column='cn',max_length=200,primary_key=True)members=ListField(db_column='memberUid')def__str__(self):returnself.namedef__unicode__(self):returnself.name

并将其添加到您的admin.py

fromdjango.contribimportadminfrom.importmodelsclassLDAPGroupAdmin(admin.ModelAdmin):exclude=['dn','objectClass']list_display=['gid','name']admin.site.register(models.LDAPGroup,LDAPGroupAdmin)
重要提示:

必须声明一个属性作为主键。 此属性将发挥特殊作用,因为它将用于生成 条目的相对可分辨名称。

例如,在上面的例子中,cn为^{tt18}的组$ 将具有dncn=foo,ou=groups,dc=nodomain,dc=org

支持的字段

djanglo ldapdb提供以下字段,全部从ldapdb.models.fields导入:

与django类似:

  • ^{tt21}$
  • ^{tt22}$
  • ^{tt23}$
  • ^{tt24}$
  • ^{tt25}$
特定于LDAP服务器:
  • ListField(保存文本值列表)
  • TimestampField(将日期时间存储为posix时间戳,通常用于posixaccount)
传统:
  • DateField(以任意格式存储日期。ldap服务器没有Date的概念。

调整django ldapdb

可以通过在DATABASE部分中定义几个参数来调整django ldapdb的行为:

PAGE_SIZE(默认值:1000
定义要由服务器< /DD>返回的结果页的最大大小
QUERY_TIMEOUT(默认:无限制)
>p>定义秒的最大等待时间,我们等待从服务器得到答复(基于每个查询的基础)。

注意

此设置适用于单个请求;如果高级操作需要许多 查询(例如一个分页的搜索,产生数千个条目) 超时将用于每个单独的请求; 整个处理时间可能要高得多。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Cassandra复制因子大于节点数   java J2EE JTA事务回滚不适用于OSE Glassfish 4.0(Build 89)   java spring安全预认证用户登录   org的java类文件。反应流。从RxJava编译示例时未找到Publisher?   java在使用dataFormat作为POJO通过Camel调用Web服务时无法设置SOAP标头   Javafx类的java静态实例   java如何防止一个部件在关闭时覆盖另一个部件的位置   sql server无法从我的java代码连接到数据库   java在JList(Swing)中显示带有的ArrayList   从Java中的CXF服务获取WSAddressing数据   使用资产文件夹进行java简单json解析(本地)   java LDAPException未绑定的无效凭据   JavaJSFspring部署到weblogic   JAVA中字符数组中的特定元素排列?   如果脚本位于不同的目录中,则ant不会使用exec标记运行Javashell脚本