summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHasan Ramezani <hasan.r67@gmail.com>2020-12-21 14:21:25 +0100
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2020-12-22 13:26:30 +0100
commit8b2a30f6f16cb1f3538847954030d69da005bc7f (patch)
tree130ac74131cc6bb7625d6805ddd99c41dc55e5f6
parent110001d0bbbabe2a5b57b14a59bd0e4b71bf2712 (diff)
Fixed #32285 -- Raised ImproperlyConfigured when AppConfig.label is not a valid Python identifier.
-rw-r--r--django/apps/config.py4
-rw-r--r--tests/apps/tests.py8
2 files changed, 12 insertions, 0 deletions
diff --git a/django/apps/config.py b/django/apps/config.py
index 6d794eee3a..bced53d506 100644
--- a/django/apps/config.py
+++ b/django/apps/config.py
@@ -34,6 +34,10 @@ class AppConfig:
# This value must be unique across a Django project.
if not hasattr(self, 'label'):
self.label = app_name.rpartition(".")[2]
+ if not self.label.isidentifier():
+ raise ImproperlyConfigured(
+ "The app label '%s' is not a valid Python identifier." % self.label
+ )
# Human-readable name for the application e.g. "Admin".
if not hasattr(self, 'verbose_name'):
diff --git a/tests/apps/tests.py b/tests/apps/tests.py
index 0e1f918bcc..a8a93ce683 100644
--- a/tests/apps/tests.py
+++ b/tests/apps/tests.py
@@ -436,6 +436,14 @@ class AppConfigTests(SimpleTestCase):
ac = AppConfig('label', Stub(__path__=['a']))
self.assertEqual(repr(ac), '<AppConfig: label>')
+ def test_invalid_label(self):
+ class MyAppConfig(AppConfig):
+ label = 'invalid.label'
+
+ msg = "The app label 'invalid.label' is not a valid Python identifier."
+ with self.assertRaisesMessage(ImproperlyConfigured, msg):
+ MyAppConfig('test_app', Stub())
+
@override_settings(
INSTALLED_APPS=['apps.apps.ModelPKAppsConfig'],
DEFAULT_AUTO_FIELD='django.db.models.SmallAutoField',