diff --git a/django/contrib/admin/sites.py b/django/contrib/admin/sites.py
index 81e43a1..5aa26fb 100644
--- a/django/contrib/admin/sites.py
+++ b/django/contrib/admin/sites.py
@@ -402,6 +402,24 @@ class AdminSite(object):
             'app_list': [app_dict]
         }, context_instance=template.RequestContext(request))
 
+def get_adminsite_class(import_path):
+    try:
+        dot = import_path.rindex('.')
+    except ValueError:
+        raise ImproperlyConfigured("%s isn't a adminsite class." % import_path)
+    module, classname = import_path[:dot], import_path[dot+1:]
+    try:
+        mod = __import__(module, {}, {}, [''])
+    except ImportError, e:
+        raise ImproperlyConfigured('Error importing module %s: "%s"' % (module, e))
+    try:
+        return getattr(mod, classname)
+    except AttributeError:
+        raise ImproperlyConfigured('The module "%s" does not define a "%s" class.' % (module, classname))
+
+default_adminsite = get_adminsite_class( getattr(settings,
+    'DEFAULT_ADMIN_SITE', 'django.contrib.admin.sites.AdminSite') )
+
 # This global object represents the default admin site, for the common case.
 # You can instantiate AdminSite in your own code to create a custom admin site.
-site = AdminSite()
+site = default_adminsite()
