我正在使用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:模型尚未加载。