
如果你打算改造和定制caravel,这篇文章可能对你有帮助
上边的这张图列出了caravel用到的部分技术(由Wappalyzer分析得出)
包括:
采用python的Flask框架(当前版本是Flask 0.11.10,caravel版本是0.10.0)
技术栈的细节可以通过翻阅源码库得到

查阅caravel的项目页我们可以知道其技术栈构成,python和javascript分别支撑前后端,python占据大半代码量
查阅源码库中的setup.py,我们可以知道项目依赖
我们忽视工具型的库,对核心库做个简要介绍
Simple and rapid application development framework, built on top of Flask. Includes detailed security, auto CRUD generation for your models, google charts and much more.
flask-appbuilder是caravel的项目骨架,如果想定制深度caravel,建议认真读完flask-appbuilder的文档
更多介绍可以参考flaskappbuilder.pythonanywhere.com/或者Introduction
一些简单的案例可以参考这里examples和Flask-AppBuilder-Skeleton
flask-appbuilder给我感觉像是把flask的工具链做了整合,使其功能全面(通往django之路?)
关于pandas的介绍我们引这篇文章:
Pandas是python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于2009年底开源出来,目前由专注于Python数据包开发的PyData开发team继续开发和维护,属于PyData项目的一部分。Pandas最初被作为金融数据分析工具而开发出来,因此,pandas为时间序列分析提供了很好的支持。 Pandas的名称来自于面板数据(panel data)和python数据分析(data analysis)。panel data是经济学中关于多维数据集的一个术语,在Pandas中也提供了panel的数据类型
SQLAlchemy是Python社区中最广泛使用的ORM工具,底层而强大
SQLAlchemy的理念是,SQL数据库的量级和性能重要于对象集合;而对象集合的抽象又重要于表和行
关于sqlalchemy的更多细节,可以参考我的这篇文章
caravel提供命令行工具caravel,项目的创建,demo的加载都由改指令负责,例如:
|
|
我们知道setup.py里的scripts将被注册为命令行工具(参考 Installing Scripts),caravel便是注册自这里
从源码中我们看到scripts=['caravel/bin/caravel'],按图索骥找到入口:caravel
从中我们连接到caravel(caravel runserver)服务跑起来时各个参数的意义
当我们用-d参数运行caravel runserver时,我们并未将wsgi app跑在gunicorn,如果是生产使用,应该去掉-d
如果我们有兴趣跟踪或定制caravel init(创建默认角色和权限)和caravel load_example的执行流程,跟踪相应函数即可
由caravel runserver跑起来的web服务的相关信息:
接下来我们开始分析caravel:app,这是整个项目的核心所在
由python模块相关的知识(建议参考《learning python》),我们知道from caravel import app中,当caravel是目录是,app来自caravel/init.py
这实际上是Flask-AppBuilder常见的项目组织形式 ,可以参考这个简要的例子,相关解释看这篇文档
要想了解caravel的项目骨架,必须通读一遍flask-appbuilder的文档
通过阅读flask-appbuilder的文档,我们了解到caravel实际是Flask-AppBuilder的一个具体应用(app),所以我们可以用fabmanager来控制caravel,诸如
|
|
通过阅读Model Views (Quick How to),我们了解了caravel的项目骨架和model相关的知识,和django十分相似,包括管理CURD机制也和django admin极其相似,django admin的确是个耀眼的设计,被借鉴倒是不奇怪。
这篇文章还提到ModelView最终会暴露出 REST API,而且带有权限验证,方面你做各种粒度的控制 ! 这个设计比django admin还漂亮,惊为天人
相关细节参考Exposed methods
我们到caravel中一试,完全可用:

目前这个分析更侧重项目结构的源码分析,还不涉及数据分析部分的分析,限于时间有限,数据部分,下回分解

如果你打算改造和定制caravel,这篇文章可能对你有帮助
上边的这张图列出了caravel用到的部分技术(由Wappalyzer分析得出)
包括:
采用python的Flask框架(当前版本是Flask 0.11.10,caravel版本是0.10.0)
技术栈的细节可以通过翻阅源码库得到

查阅caravel的项目页我们可以知道其技术栈构成,python和javascript分别支撑前后端,python占据大半代码量
查阅源码库中的setup.py,我们可以知道项目依赖
我们忽视工具型的库,对核心库做个简要介绍
Simple and rapid application development framework, built on top of Flask. Includes detailed security, auto CRUD generation for your models, google charts and much more.
flask-appbuilder是caravel的项目骨架,如果想定制深度caravel,建议认真读完flask-appbuilder的文档
更多介绍可以参考flaskappbuilder.pythonanywhere.com/或者Introduction
一些简单的案例可以参考这里examples和Flask-AppBuilder-Skeleton
flask-appbuilder给我感觉像是把flask的工具链做了整合,使其功能全面(通往django之路?)
关于pandas的介绍我们引这篇文章:
Pandas是python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于2009年底开源出来,目前由专注于Python数据包开发的PyData开发team继续开发和维护,属于PyData项目的一部分。Pandas最初被作为金融数据分析工具而开发出来,因此,pandas为时间序列分析提供了很好的支持。 Pandas的名称来自于面板数据(panel data)和python数据分析(data analysis)。panel data是经济学中关于多维数据集的一个术语,在Pandas中也提供了panel的数据类型
SQLAlchemy是Python社区中最广泛使用的ORM工具,底层而强大
SQLAlchemy的理念是,SQL数据库的量级和性能重要于对象集合;而对象集合的抽象又重要于表和行
关于sqlalchemy的更多细节,可以参考我的这篇文章
caravel提供命令行工具caravel,项目的创建,demo的加载都由改指令负责,例如:
|
|
我们知道setup.py里的scripts将被注册为命令行工具(参考 Installing Scripts),caravel便是注册自这里
从源码中我们看到scripts=['caravel/bin/caravel'],按图索骥找到入口:caravel
从中我们连接到caravel(caravel runserver)服务跑起来时各个参数的意义
当我们用-d参数运行caravel runserver时,我们并未将wsgi app跑在gunicorn,如果是生产使用,应该去掉-d
如果我们有兴趣跟踪或定制caravel init(创建默认角色和权限)和caravel load_example的执行流程,跟踪相应函数即可
由caravel runserver跑起来的web服务的相关信息:
接下来我们开始分析caravel:app,这是整个项目的核心所在
由python模块相关的知识(建议参考《learning python》),我们知道from caravel import app中,当caravel是目录是,app来自caravel/init.py
这实际上是Flask-AppBuilder常见的项目组织形式 ,可以参考这个简要的例子,相关解释看这篇文档
要想了解caravel的项目骨架,必须通读一遍flask-appbuilder的文档
通过阅读flask-appbuilder的文档,我们了解到caravel实际是Flask-AppBuilder的一个具体应用(app),所以我们可以用fabmanager来控制caravel,诸如
|
|
通过阅读Model Views (Quick How to),我们了解了caravel的项目骨架和model相关的知识,和django十分相似,包括管理CURD机制也和django admin极其相似,django admin的确是个耀眼的设计,被借鉴倒是不奇怪。
这篇文章还提到ModelView最终会暴露出 REST API,而且带有权限验证,方面你做各种粒度的控制 ! 这个设计比django admin还漂亮,惊为天人
相关细节参考Exposed methods
我们到caravel中一试,完全可用:

目前这个分析更侧重项目结构的源码分析,还不涉及数据分析部分的分析,限于时间有限,数据部分,下回分解