django的ldap数据库后端

django-ldapdb的Python项目详细描述


https://secure.travis-ci.org/django-ldapdb/django-ldapdb.png?branch=masterLatest VersionSupported Python versionsWheel statusLicense

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

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

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

django-ldapdb支持django版本1.11/2.1/2.2和python 2.7/3.4/3.5/3.6/3.7, 就django和python版本而言是兼容的。

安装django ldapdb

Linux

使用pip:pip install django-ldapdb

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

窗口

django-ldapdb取决于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-ldapdb

pip install django-ldapdb

使用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为^{tt17}的组$ 将具有dncn=foo,ou=groups,dc=nodomain,dc=org

支持的字段

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

与django类似:

  • ^{tt20}$
  • ^{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仿射变换以旋转通用路径   IntelliJ IDEA中的java代码标记为编译器错误,在Eclipse中可以正常工作   java ArrayList的containsAll返回了错误的值   如何在安卓中的片段活动中添加java代码   java通过使用netbeans调用jbutton,将带有行的jbutton添加到jtable中   java在更新arrayAdapter/listView之前更新最终列表   java如何在另一个项目中导入包含AspectJ方面和注释的项目   为什么我的java布尔测试总是失败?   Eclipse中的java自动激活   在Bluetooth for Java(更具体地说是Android)之上是否有TCP/IP协议栈实现?   java Android Studio通过intent传递ArrayList并填充ListView