未提供项目说明

lc-flask-routes的Python项目详细描述


烧瓶路径py

概述

FlaskWeb框架提供了装饰器@app.route 为路由定义处理程序,这是简单web应用程序的推荐方法。但是,使用此方法需要 这种路由处理程序与特定的应用程序相关联,因此很难跟踪/单元测试大型web应用程序的路由。 flask-routes-py提供mixin,用于使用静态(classmethod)处理程序将路由定义为类,并提供可选的附加项 {alike,集成了参数^的{ 自动路由发现和注册到lc-registry。在

安装

从PyPi安装(首选方法)

pip install lc-flask-routes
pip install lc-flask-routes[reqparser]# enable support for lc_flask_reqparser
pip install lc-flask-routes[registry]# enable support for lc_registry
pip install lc-flask-routes[all]# enable all options

使用Pip

从GitHub安装 ^{pr2}$

其中x.x.x是要下载的版本。在

手动下载安装

要下载源分发和/或控制盘文件,请导航到 https://github.com/libcommon/flask-routes-py/tree/releases/vx.x.x/dist,其中x.x.x是要安装的版本, 并通过用户界面或wget等工具进行下载。然后安装运行:

pip install <downloaded file>

下载后请不要更改文件名,因为Pip需要安装文件的特定命名约定。在

依赖关系

flask-routes-py依赖于并设计为与 Flask framework。可选依赖项还包括 flask-reqparser-py用于集成请求参数解析,以及 lc-registry用于路由自动发现。只有Python版本>;=3.6才是 官方支持。在

入门

定义扩展BaseRouteMixinBaseRouteWithParserMixin类的基类 (如果安装了[reqparser][all]选项),则所有其他路由类都将扩展。这个班可以 包含所有路由所需的任何helper方法或类变量,但是not应该定义ROUTE_MAP类吗 变量。在

fromtypingimportAny,Dict,Optionalimportflaskfromlc_flask_routesimport(BaseRouteMixin,BaseRouteWithParserMixin,RouteResponse,WerkzeugLocalProxy)fromlc_flask_reqparserimportRequestParserclassBaseRoute(BaseRouteMixin):"""Base route."""__slots__=()classBaseParserRoute(BaseRouteWithParserMixin):"""Base route with request parser."""__slots__=()@classmethoddefgen_request_parser(cls)->Optional[RequestParser]:return(RequestParser().add_argument("base_argument_for_all_routes"))classIndexRoute(BaseRoute):"""Route: /    Endpoint: "index"    Description: Splash page    """__slots__=()ROUTE_MAP={"/":{"endpoint":"index","methods":["GET","POST"]}}@classmethoddefget(cls,app:WerkzeugLocalProxy,request:WerkzeugLocalProxy,session:WerkzeugLocalProxy,route_kwargs:Dict[str,Any])->RouteResponse:return"<h1>Splash Page</h1>"@classmethoddefpost(cls,app:WerkzeugLocalProxy,request:WerkzeugLocalProxy,session:WerkzeugLocalProxy,route_kwargs:Dict[str,Any])->RouteResponse:returnflask.redirect(url_for("index"))if__name__=="__main__":app=flask.Flask(__name__)IndexRoute.register_route(app)app.run()

ROUTE_MAP类变量只能在非基路由上定义,其结构与参数相似 对于Flask的@app.route装饰器,它实际上调用了add_url_rule 在引擎盖下面。每个键都是一个URI,每个对应的值是传递给add_url_rule的关键字参数。见烧瓶文件 对于该功能的期望和限制。BaseRouteMixin有一个register_route方法,它实现与@app.route相同的结果。 {route必须单独注册(请参见下面的每个类)。在

如果与[registry][all]选项一起安装,flask-routes-py还会公开一个用于自动发现的RouteRegistryMixin类 使用元编程的路由类。定义一个扩展metaclass的Python RouteRegistryMixin,然后定义一个使用它的基类 metaclass。在

fromabcimportABCMetafromtypingimportAny,Dictimportflaskfromlc_flask_routesimport(BaseRouteMixin,BaseRouteWithParserMixin,RouteResponse,WerkzeugLocalProxy)classRouteRegistry(RouteRegistryMixin,ABCMeta):"""Route registry."""__slots__=()_REGISTRY=dict()classBaseRoute(BaseRouteMixin,metaclass=RouteRegistry):"""Base route. Any child class will be registered in    RouteRegistry's _REGISTRY class variable automatically    (as long as it's in scope)."""classIndexRoute(BaseRoute):"""Route: /    Endpoint: "index"    Description: Splash page    """__slots__=()ROUTE_MAP={"/":{"endpoint":"index","methods":["GET"]}}@classmethoddefget(cls,app:WerkzeugLocalProxy,request:WerkzeugLocalProxy,session:WerkzeugLocalProxy,route_kwargs:Dict[str,Any])->RouteResponse:return"<h1>Splash Page</h1>"classLoginRoute(BaseRoute):"""Route: /login    Endpoint: "login"    Description: Login workflow    """__slots__=()ROUTE_MAP={"/login":{"endpoint":"login","methods":["POST"]}}@classmethoddefpost(cls,app:WerkzeugLocalProxy,request:WerkzeugLocalProxy,session:WerkzeugLocalProxy,route_kwargs:Dict[str,Any])->RouteResponse://Dosomeworktoverifyidentityreturnflask.redirect(url_for("index"))if__name__=="__main__":app=flask.Flask(__name__)# Register IndexRoute and LoginRoute with appRouteRegistry.register_routes(app)app.run()

RouteRegistryMixin公开了两种向应用程序注册路由的方法:register_routes和{}。 如上所示,register_routes将注册注册表中的所有路由,而register_routes_where 在注册reach route类之前对它求值。例如,如果正在使用同一个注册表,这可能会很有用 基于类变量初始化两个不同的应用程序。在

贡献/建议

欢迎投稿和建议!要提出功能请求,请报告错误,或对现有的 功能,请提交问题。如需投稿,请提交一份个人简历,但请务必进行打印、类型检查和测试 你的代码。提前谢谢!在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java无法使用Spring转换器将枚举转换为int   java如何将resultset转换为int进行查询   servlet是否可以将java字符串的值分配给html表单输入?   Java中的c-comlen函数   java如何在TestNG测试方法中使用“allowreturnvalues=“true”?   jvm当Java线程运行时会发生什么。睡眠(100)?关于将netty的Write flush()记录到ChannelHandlerContext的问题   JavaXPath问题。无法读取部分html   oracle如何调试java。sql。SQLException:无法解析连接标识符   java如何转换两个日期,一个在BST(当前日期)中,另一个在GMT中,以便可以比较方法前后的日期?   使用javanetbeans在telegram机器人上发送粗体文本   javagui的swing问题   java如何修复在JAR文件中指定“无主清单属性”的错误?   路径如何导入Java中的目录(和子目录)列表?   如何在Java中将变量的当前值声明为final?   java应用程序在设置映射类型时停止   没有xml的javaspring项目   java JRE中所有可用的映像是什么?