查看路径参数类型 for converter_name, converter_classin app. url_map. converters. items( ) : print ( f" { converter_name} : { converter_class} " ) # 输出结果 default: <class 'werkzeug.routing.converters.UnicodeConverter'> string: <class 'werkzeug.routing.converters.UnicodeConverter'> any: <class 'werkzeug.routing.converters.AnyConverter'> path: <class 'werkzeug.routing.converters.PathConverter'> int: <class 'werkzeug.routing.converters.IntegerConverter'> float: <class 'werkzeug.routing.converters.FloatConverter'> uuid: <class 'werkzeug.routing.converters.UUIDConverter'>一、string @app. route ( '/user/<string:username>' ) def show_string ( username) : return f'type: string, value: { username} , python_type: { type ( username) . __name__} ' 测试/user/john_doe # 输出结果 type: string, value: john_doe, python_type: str测试/user/123 # 输出结果 type: string, value: 123, python_type: str测试/user/john%20doe # 输出结果 type: string, value: john doe, python_type: str二、int @app. route ( '/article/<int:article_id>' ) def show_int ( article_id) : return f'type: int, value: { article_id} , python_type: { type ( article_id) . __name__} ' 测试/article/42 # 输出结果 type: int, value: 42, python_type: int测试/article/0 # 输出结果 type: int, value: 0, python_type: int测试/article/-100 # 输出结果 Not Found测试/article/3.14 # 输出结果 Not Found测试/article/abc # 输出结果 Not Found测试/article/10abc # 输出结果 Not Found三、float @app. route ( '/price/<float:price>' ) def show_float ( price) : return f'type: float, value: { price} , python_type: { type ( price) . __name__} ' 测试/price/19.99 # 输出结果 type: float, value: 19.99, python_type: float测试/price/-5.5 # 输出结果 Not Found测试/price/100 # 输出结果 Not Found测试/price/100.0 # 输出结果 type: float, value: 100.0, python_type: float测试/price/.5 # 输出结果 Not Found测试/price/3.1415926 # 输出结果 type: float, value: 3.1415926, python_type: float测试/price/10,5 # 输出结果 Not Found测试/price/10k # 输出结果 Not Found测试/price/abc # 输出结果 Not Found四、path 1、演示 @app. route ( '/path/<path:filepath>' ) def show_path ( filepath) : return f'type: path, value: { filepath} , python_type: { type ( filepath) . __name__} ' 测试/path/docs # 输出结果 type: path, value: docs, python_type: str测试/path/docs/api # 输出结果 type: path, value: docs/api, python_type: str测试/path/docs/api/v1 # 输出结果 type: path, value: docs/api/v1, python_type: str测试/path/static/css/style.css # 输出结果 type: path, value: static/css/style.css, python_type: str测试/path/a/b/../d # 输出结果 type: path, value: a/b/../d, python_type: str2、string 处理路径类型的问题 @app. route ( '/path/<string:filepath>' ) def show_path ( filepath) : return f'type: string, value: { filepath} , python_type: { type ( filepath) . __name__} ' 测试/path/docs # 输出结果 type: string, value: docs, python_type: str测试/path/docs/api # 输出结果 Not Found测试/path/docs/api/v1 # 输出结果 Not Found测试/path/static/css/style.css # 输出结果 Not Found测试/path/a/b/../d # 输出结果 Not Found五、uuid @app. route ( '/resource/<uuid:resource_id>' ) def show_uuid ( resource_id) : return f'type: uuid, value: { resource_id} , python_type: { type ( resource_id) . __name__} ' 测试/resource/123e4567-e89b-12d3-a456-426614174000 # 输出结果 type: uuid, value: 123e4567-e89b-12d3-a456-426614174000, python_type: UUID测试/resource/550e8400-e29b-41d4-a716-446655440000 # 输出结果 type: uuid, value: 550e8400-e29b-41d4-a716-446655440000, python_type: UUID测试/resource/not-a-uuid # 输出结果 Not Found测试/resource/123 # 输出结果 Not Found测试/resource/123e4567-e89b-12d3-a456-42661417400(短了) # 输出结果 Not Found测试/resource/123e4567-e89b-12d3-a456-4266141740000(长了) # 输出结果 Not Found