summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/urls/resolvers.py37
1 files changed, 14 insertions, 23 deletions
diff --git a/django/urls/resolvers.py b/django/urls/resolvers.py
index 432bf50076..89ae18694c 100644
--- a/django/urls/resolvers.py
+++ b/django/urls/resolvers.py
@@ -336,30 +336,21 @@ class RoutePattern(CheckURLMixin):
def _check_pattern_unmatched_angle_brackets(self):
warnings = []
- segments = self._route.split("/")
- for segment in segments:
- open_bracket_counter = 0
- unmatched_angle_bracket = None
- for char in segment:
- if char == "<":
- open_bracket_counter += 1
- elif char == ">":
- open_bracket_counter -= 1
- if open_bracket_counter < 0:
- unmatched_angle_bracket = ">"
- break
- else:
- if open_bracket_counter > 0:
- unmatched_angle_bracket = "<"
-
- if unmatched_angle_bracket is not None:
- warnings.append(
- Warning(
- "Your URL pattern %s has an unmatched '%s' bracket."
- % (self.describe(), unmatched_angle_bracket),
- id="urls.W010",
+ msg = "Your URL pattern %s has an unmatched '%s' bracket."
+ brackets = re.findall(r"[<>]", str(self._route))
+ open_bracket_counter = 0
+ for bracket in brackets:
+ if bracket == "<":
+ open_bracket_counter += 1
+ elif bracket == ">":
+ open_bracket_counter -= 1
+ if open_bracket_counter < 0:
+ warnings.append(
+ Warning(msg % (self.describe(), ">"), id="urls.W010")
)
- )
+ open_bracket_counter = 0
+ if open_bracket_counter > 0:
+ warnings.append(Warning(msg % (self.describe(), "<"), id="urls.W010"))
return warnings
def _compile(self, route):