diff -r 87cceb6af4c4 django/conf/__init__.py
--- a/django/conf/__init__.py	Mon Sep 27 16:21:16 2010 +0000
+++ b/django/conf/__init__.py	Mon Sep 27 23:06:30 2010 +0100
@@ -16,12 +16,31 @@
 
 ENVIRONMENT_VARIABLE = "DJANGO_SETTINGS_MODULE"
 
-class LazySettings(LazyObject):
+
+class LazySettings(object):
     """
     A lazy proxy for either global Django settings or a custom settings object.
     The user can manually configure settings prior to using them. Otherwise,
     Django uses the settings module pointed to by DJANGO_SETTINGS_MODULE.
     """
+    def __init__(self):
+        self.configured = False
+
+    def __getattr__(self, name):
+        if self.configured:
+            raise AttributeError("Settings object has no attribute '%s'" % name)
+        else:
+            self._setup()
+            return getattr(self, name)
+
+    def __dir__(self):
+        if not self.configured:
+            self._setup()
+        return self.__dict__.keys()
+
+    # For Python < 2.6:
+    __members__ = property(lambda self: self.__dir__())
+
     def _setup(self):
         """
         Load the settings module pointed to by the environment variable. This
@@ -37,7 +56,13 @@
             # problems with Python's interactive help.
             raise ImportError("Settings cannot be imported, because environment variable %s is undefined." % ENVIRONMENT_VARIABLE)
 
-        self._wrapped = Settings(settings_module)
+        self._load(Settings(settings_module))
+        self.configured = True
+
+    def _load(self, obj):
+        for name in dir(obj):
+            if not name.startswith('__'):
+                setattr(self, name, getattr(obj, name))
 
     def configure(self, default_settings=global_settings, **options):
         """
@@ -45,19 +70,12 @@
         parameter sets where to retrieve any unspecified values from (its
         argument must support attribute access (__getattr__)).
         """
-        if self._wrapped != None:
+        if self.configured:
             raise RuntimeError('Settings already configured.')
-        holder = UserSettingsHolder(default_settings)
-        for name, value in options.items():
-            setattr(holder, name, value)
-        self._wrapped = holder
+        self._load(default_settings)
+        self.__dict__.update(options)
+        self.configured = True
 
-    def configured(self):
-        """
-        Returns True if the settings have already been configured.
-        """
-        return bool(self._wrapped)
-    configured = property(configured)
 
 class Settings(object):
     def __init__(self, settings_module):
@@ -114,29 +132,6 @@
             os.environ['TZ'] = self.TIME_ZONE
             time.tzset()
 
-class UserSettingsHolder(object):
-    """
-    Holder for user configured settings.
-    """
-    # SETTINGS_MODULE doesn't make much sense in the manually configured
-    # (standalone) case.
-    SETTINGS_MODULE = None
-
-    def __init__(self, default_settings):
-        """
-        Requests for configuration variables not in this class are satisfied
-        from the module specified in default_settings (if possible).
-        """
-        self.default_settings = default_settings
-
-    def __getattr__(self, name):
-        return getattr(self.default_settings, name)
-
-    def __dir__(self):
-        return self.__dict__.keys() + dir(self.default_settings)
-
-    # For Python < 2.6:
-    __members__ = property(lambda self: self.__dir__())
 
 settings = LazySettings()
 
diff -r 87cceb6af4c4 django/contrib/messages/tests/base.py
--- a/django/contrib/messages/tests/base.py	Mon Sep 27 16:21:16 2010 +0000
+++ b/django/contrib/messages/tests/base.py	Mon Sep 27 23:06:30 2010 +0100
@@ -40,7 +40,7 @@
         for setting in self.restore_settings:
             if hasattr(settings, setting):
                 self._remembered_settings[setting] = getattr(settings, setting)
-                delattr(settings._wrapped, setting)
+                delattr(settings, setting)
         # Backup these manually because we do not want them deleted.
         self._middleware_classes = settings.MIDDLEWARE_CLASSES
         self._template_context_processors = \
@@ -65,7 +65,7 @@
             value = self._remembered_settings.pop(setting)
             setattr(settings, setting, value)
         elif hasattr(settings, setting):
-            delattr(settings._wrapped, setting)
+            delattr(settings, setting)
 
     def get_request(self):
         return http.HttpRequest()
diff -r 87cceb6af4c4 tests/regressiontests/comment_tests/tests/app_api_tests.py
--- a/tests/regressiontests/comment_tests/tests/app_api_tests.py	Mon Sep 27 16:21:16 2010 +0000
+++ b/tests/regressiontests/comment_tests/tests/app_api_tests.py	Mon Sep 27 23:06:30 2010 +0100
@@ -41,7 +41,7 @@
         del settings.INSTALLED_APPS[-1]
         settings.COMMENTS_APP = self.old_comments_app
         if settings.COMMENTS_APP is None:
-            del settings._wrapped.COMMENTS_APP
+            del settings.COMMENTS_APP
 
     def testGetCommentApp(self):
         from regressiontests.comment_tests import custom_comments
diff -r 87cceb6af4c4 tests/regressiontests/settings_tests/tests.py
--- a/tests/regressiontests/settings_tests/tests.py	Mon Sep 27 16:21:16 2010 +0000
+++ b/tests/regressiontests/settings_tests/tests.py	Mon Sep 27 23:06:30 2010 +0100
@@ -7,11 +7,19 @@
     # Regression tests for #10130: deleting settings.
     #
 
+    def setUp(self):
+        self.DEBUG = settings.DEBUG
+
+    def tearDown(self):
+        settings.DEBUG = self.DEBUG
+
     def test_settings_delete(self):
         settings.TEST = 'test'
         self.assertEqual('test', settings.TEST)
         del settings.TEST
         self.assertRaises(AttributeError, getattr, settings, 'TEST')
 
-    def test_settings_delete_wrapped(self):
-        self.assertRaises(TypeError, delattr, settings, '_wrapped')
+        # Check with something that will definitely already exist
+        # in the settings module
+        del settings.DEBUG
+        self.assertRaises(AttributeError, getattr, settings, 'DEBUG')
