diff --git a/django/core/checks/urls.py b/django/core/checks/urls.py index e744cc0ca4..7106478642 100644 --- a/django/core/checks/urls.py +++ b/django/core/checks/urls.py @@ -95,6 +95,10 @@ def check_pattern_startswith_slash(pattern): Check that the pattern does not begin with a forward slash. """ regex_pattern = pattern.regex.pattern + if not settings.APPEND_SLASH: + # Skip check as it can be useful to start a URL pattern with a slash + # when APPEND_SLASH=False. + return [] if regex_pattern.startswith('/') or regex_pattern.startswith('^/'): warning = Warning( "Your URL pattern {} has a regex beginning with a '/'. Remove this " diff --git a/docs/releases/1.10.2.txt b/docs/releases/1.10.2.txt index bc11980053..8c031d37f5 100644 --- a/docs/releases/1.10.2.txt +++ b/docs/releases/1.10.2.txt @@ -14,3 +14,6 @@ Bugfixes * Allowed combining ``contrib.postgres.search.SearchQuery`` with more than one ``&`` or ``|`` operators (:ticket:`27143`). + +* Disabled system check for URL patterns beginning with a '/' when + ``APPEND_SLASH=False`` (:ticket:`27238`). diff --git a/tests/check_framework/test_urls.py b/tests/check_framework/test_urls.py index 926d1947dd..3418af8ac0 100644 --- a/tests/check_framework/test_urls.py +++ b/tests/check_framework/test_urls.py @@ -55,6 +55,16 @@ class CheckUrlsTest(SimpleTestCase): self.assertIn(expected_msg, warning.msg) + @override_settings( + ROOT_URLCONF='check_framework.urls.beginning_with_slash', + APPEND_SLASH=False, + ) + def test_beginning_with_slash_append_slash(self): + # It can be useful to start a URL pattern with a slash when + # APPEND_SLASH=False (#27238). + result = check_url_config(None) + self.assertEqual(result, []) + @override_settings(ROOT_URLCONF='check_framework.urls.name_with_colon') def test_name_with_colon(self): result = check_url_config(None)