Browse Source

Fixed #26616 -- Improved error message when AppConfig.name is invalid.

inondle 8 years ago
parent
commit
080dd74e01
2 changed files with 10 additions and 2 deletions
  1. 8 1
      django/apps/config.py
  2. 2 1
      tests/apps/tests.py

+ 8 - 1
django/apps/config.py

@@ -139,7 +139,14 @@ class AppConfig(object):
                 "'%s' must supply a name attribute." % entry)
 
         # Ensure app_name points to a valid module.
-        app_module = import_module(app_name)
+        try:
+            app_module = import_module(app_name)
+        except ImportError:
+            raise ImproperlyConfigured(
+                "Cannot import '%s'. Check that '%s.%s.name' is correct." % (
+                    app_name, mod_path, cls_name,
+                )
+            )
 
         # Entry is a path to an app config class.
         return cls(app_name, app_module)

+ 2 - 1
tests/apps/tests.py

@@ -78,7 +78,8 @@ class AppsTests(SimpleTestCase):
         with self.assertRaises(ImportError):
             with self.settings(INSTALLED_APPS=['there is no such app']):
                 pass
-        with self.assertRaises(ImportError):
+        msg = "Cannot import 'there is no such app'. Check that 'apps.apps.NoSuchApp.name' is correct."
+        with self.assertRaisesMessage(ImproperlyConfigured, msg):
             with self.settings(INSTALLED_APPS=['apps.apps.NoSuchApp']):
                 pass