微与依赖为什么 Flask 把自己叫做微框架,并且它依赖于两个库(也就是 Werkzeug 和 Jinja 2)。为什么不能?如果我们仔细审查 Ruby 的 web 开发,有一个非常 类似 WSGI 的协议。被称作 Rack 的就是它,但是除此之外,它看起来非常像 一个 WSGI 的 Ruby 实现。但是几乎所有的 Ruby 应用不直接使用 Rack ,而是 基于一个相同名字的库。这个 Rack 库与 Python 中的两个库不相伯仲: WebOb (以前叫 Paste ) 和 Werkzeug。 Paste 依然在使用,但是从我的理解,它有 些过时,而赞同 WebOb 。 WebOb 和 Werzeug 的开发是一起开始的,也有着同样 的理念:为其它应用的利用做一个 WSGI 的良好实现。 Flask 是一个受益于 Werkzeug 妥善实现 WSGI 接口(有时是一个复杂的任务) 既得成果的框架。感谢 Python 包基础建设中近期的开发,包依赖不再是问题, 并且只有很少的原因反对依赖其它库的库。 线程局域变量Flask 为请求、会话和一个额外对象(你可以在 是的,通常情况下使用线程局域变量不是一个明智的主意。它们在不基于线程概念的 服务器上会导致问题,并且使得大型应用难以维护。但 Flask 不仅为大型应用或异步 服务器设计。 Flask 想要使得编写一个传统 web 应用的过程快速而简单。 一些关于基于 Flask 大型应用的灵感,见文档的 聚沙成塔 一节。 Flask 是什么,不是什么?Flask 永远不会包含数据库层,也不会有表单库或是这个方向的其它东西。 Flask 只建立 Werkezug 和 Jinja2 的桥梁,前者实现一个合适的 WSGI 应用,后者处理 模板。 Flask 也绑定了一些通用的标准库包,比如 logging 。其它所有一切取决 于扩展。 为什么是这样?众口难调,因此 Flask 不强制把特异的偏好和需求囊括在核心里。 大多数 web 应用都可以说需要一个模板引擎,但并不是每个应用都需要一个 SQL 数据库。 Flask 的思想是为所有应用建立一个良好的基础,其余的一切都取决于你和扩展。 |
Archiver|手机版|笨鸟自学网 ( 粤ICP备20019910号 )
GMT+8, 2025-1-3 02:37 , Processed in 0.013365 second(s), 17 queries .