Clarified URL regex check message with respect to include().

This commit is contained in:
Riccardo Magliocchetti 2016-09-01 15:39:56 +02:00 committed by Tim Graham
parent 6b54504e66
commit 7ed8b98f42
3 changed files with 14 additions and 3 deletions

View File

@ -97,8 +97,11 @@ def check_pattern_startswith_slash(pattern):
regex_pattern = pattern.regex.pattern
if regex_pattern.startswith('/') or regex_pattern.startswith('^/'):
warning = Warning(
"Your URL pattern {} has a regex beginning with a '/'. "
"Remove this slash as it is unnecessary.".format(describe_pattern(pattern)),
"Your URL pattern {} has a regex beginning with a '/'. Remove this "
"slash as it is unnecessary. If this pattern is targeted in an "
"include(), ensure the include() pattern has a trailing '/'.".format(
describe_pattern(pattern)
),
id="urls.W002",
)
return [warning]

View File

@ -657,6 +657,8 @@ The following checks are performed on your URL configuration:
including URLs.
* **urls.W002**: Your URL pattern ``<pattern>`` has a ``regex``
beginning with a ``/``. Remove this slash as it is unnecessary.
If this pattern is targeted in an :func:`~django.conf.urls.include`, ensure
the :func:`~django.conf.urls.include` pattern has a trailing ``/``.
* **urls.W003**: Your URL pattern ``<pattern>`` has a ``name``
including a ``:``. Remove the colon, to avoid ambiguous namespace
references.

View File

@ -46,7 +46,13 @@ class CheckUrlsTest(SimpleTestCase):
self.assertEqual(len(result), 1)
warning = result[0]
self.assertEqual(warning.id, 'urls.W002')
expected_msg = "Your URL pattern '/starting-with-slash/$' has a regex beginning with a '/'"
expected_msg = (
"Your URL pattern '/starting-with-slash/$' has a regex beginning "
"with a '/'. Remove this slash as it is unnecessary. If this "
"pattern is targeted in an include(), ensure the include() pattern "
"has a trailing '/'."
)
self.assertIn(expected_msg, warning.msg)
@override_settings(ROOT_URLCONF='check_framework.urls.name_with_colon')