有什么办法可以在Django settings.py中导入模型?

时间:2019-09-12 09:12:12

标签: python django django-rest-framework ldap django-auth-ldap

我正在使用Django-auth-LDAP进行身份验证,现在我想获取类似字段的数据:

  

AUTH_LDAP_BIND_DN,AUTH_LDAP_BIND_PASSWORD,AUTH_LDAP_SERVER_URI

从数据库中获取,但出现错误。

settings.py

import subprocess
from django.apps import apps
from django.core.exceptions import ObjectDoesNotExist
ldap = False
Config = apps.get_model('config', 'Config')
Config = Config()
try:
    ldap = Config.objects.get(name="ldap")
except ObjectDoesNotExist:
    pass
if ldap and check_ldap_connection():
    import ldap
    from django_auth_ldap.config import LDAPSearch
    AUTH_LDAP_SERVER_URI = Config.objects.get(name="ldap_server_uri")

    AUTH_LDAP_BIND_DN = Config.objects.get(name="ldap_bind_dn")
    AUTH_LDAP_BIND_PASSWORD = Config.objects.get(name="ldap_bind_password")
    ldap_search = Config.objects.get(name="ldap_search")
    AUTH_LDAP_USER_SEARCH = LDAPSearch(
        ldap_search , ldap.SCOPE_SUBTREE, "(uid=%(user)s)"
    )

def check_ldap_connection():
    try:
        ldap_server_uri = Config.objects.get(name="ldap_server_uri")
        ldap_bind_dn = Config.objects.get(name="ldap_bind_dn")
        ldap_search = Config.objects.get(name="ldap_search")
        ldap_bind_password = Config.objects.get(name="ldap_bind_password")
    except ObjectDoesNotExist:
        return False
    cmd = "ldapsearch -H \"" + ldap_server_uri + "\" -D \"" + ldap_bind_dn + "\" -w \"" +  ldap_bind_password \
          + "\" -b \"" + ldap_search + "\" | " + "grep result"
    try:
        connection = ""
        connection = subprocess.check_output(cmd, shell=True).decode()
    except Exception as e:
        return False
        connection = connection.split()
        if "0" and "Success" in connection:
            return True
        return False

错误:

  

提高AppRegistryNotReady(“尚未加载模型。”)   django.core.exceptions.AppRegistryNotReady:模型尚未加载。

0 个答案:

没有答案