@@ -1401,6 +1401,7 @@ def add_route(self, method, path, handler, *, name=None):
14011401 assert method in self .METHODS , method
14021402 parts = []
14031403 factory = PlainRoute
1404+ format_parts = []
14041405 for part in path .split ('/' ):
14051406 if not part :
14061407 continue
@@ -1409,16 +1410,19 @@ def add_route(self, method, path, handler, *, name=None):
14091410 parts .append ('(?P<' + match .group ('var' ) + '>' +
14101411 self .GOOD + ')' )
14111412 factory = DynamicRoute
1413+ format_parts .append ('{' + match .group ('var' )+ '}' )
14121414 continue
14131415
14141416 match = self .DYN_WITH_RE .match (part )
14151417 if match :
14161418 parts .append ('(?P<' + match .group ('var' ) + '>' +
14171419 match .group ('re' ) + ')' )
14181420 factory = DynamicRoute
1421+ format_parts .append ('{' + match .group ('var' )+ '}' )
14191422 continue
14201423 if self .PLAIN .match (part ):
14211424 parts .append (re .escape (part ))
1425+ format_parts .append (part )
14221426 continue
14231427 raise ValueError ("Invalid path '{}'['{}']" .format (path , part ))
14241428 if factory is PlainRoute :
@@ -1432,7 +1436,8 @@ def add_route(self, method, path, handler, *, name=None):
14321436 except re .error as exc :
14331437 raise ValueError (
14341438 "Bad pattern '{}': {}" .format (pattern , exc )) from None
1435- route = DynamicRoute (method , handler , name , compiled , path )
1439+ formatter = '/' + '/' .join (format_parts )
1440+ route = DynamicRoute (method , handler , name , compiled , formatter )
14361441 self ._register_endpoint (route )
14371442 return route
14381443
0 commit comments