Flask AppBuilder安装
安装
安装很简单,使用普通的python软件包安装。我建议您另外安装基础骨架应用程序,以便您可以立即运行应用程序(没有任何型号)和易于增长的样板。
简单安装
您可以通过以下方式安装框架:
$ pip install flask-appbuilder
建议虚拟环境安装
虚拟环境是非常可取的,因为您拥有的项目越多,您将越有可能使用不同版本的Python本身,或至少不同版本的Python库。让我们面对这一点:图书馆通常往往兼容兼容,而且任何严重的应用程序都不可能有零依赖关系。那么如果两个或更多的项目有冲突的依赖,那么你该怎么办?
如果您在Mac OS X或Linux上,以下两个命令之一有可能适用于您:
$ sudo easy_install virtualenv
甚至更好:
$ sudo pip install virtualenv
其中一个可能会在您的系统上安装virtualenv。也许这是你的包裹经理。如果您使用debian系统(如Ubuntu),请尝试:
$ sudo apt-get install python-virtualenv
接下来创建一个virtualenv:
$ virtualenv venv New python executable in venv/bin/python Installing distribute............done. $ . venv/bin/activate (venv)$现在在虚拟环境中安装FAB,它会安装所有依赖项,这些将与系统的python包隔离
(venv)$ pip install flask-appbuilder一旦您安装了virtualenv,请使用fabmanager命令行工具来创建您的第一个应用程序。所以创建一个骨架应用程序和第一个管理员用户:
(venv)$ fabmanager create-app Your new app name: first_app Your engine type, SQLAlchemy or MongoEngine [SQLAlchemy]: Downloaded the skeleton app, good coding! (venv)$ cd first_app (venv)$ fabmanager create-admin Username [admin]: User first name [admin]: User last name [user]: Email [admin@fab.org]: Password: Repeat for confirmation:框架将立即在数据库中插入所有可能的权限,这些权限将与您刚刚创建的管理员用户的Admin角色相关联。你准备运行:
(venv)$ fabmanager run这将启动一个Web开发服务器
你现在在http:// localhost:8080上有一个正在运行的开发服务器。
实际上,您不需要运行AppBuilder的框架应用程序,但这是一个很好的开始。这个第一个应用程序是基于SQLAlchemy的。
注意
有两种类型的骨架可用,您可以从SQLAlchemy默认值或Mongongine for MongoDB中选择。要使用MongoEngine骨架,您需要安装flask-mongoengine扩展。
初始化
自1.3.0版本以来,没有管理员用户被自动创建,您必须使用fabmanager来执行此操作。有很多其他有用的选项,可以与fabmanager一起使用,如重置用户的密码,列出所有用户和视图等。
安装要求
Flask App Builder依赖于
- flask :Web框架,这是我们正在扩展的。
- flask-sqlalchemy :DB访问(参见SQLAlchemy)。
- flask-login:登录,flask上的会话。
- flask-openid:打开ID身份验证。
- flask-wtform:Web表单。
- flask-Babel:用于国际化。
如果您打算使用图像处理或上传,则需要安装PIL:
pip install pillow
or:
pip install PIL
Python 2和3兼容性
该框架本身是兼容的,并且已经针对Python 2.6,2.7和3.3进行了测试。但是,在Python 3.3中仍然存在一个问题,框架国际化功能使用了优秀的包Babel,但是我发现python 3.3不兼容。虽然这个问题没有解决,但是对于FAB上的Py3.3有一个限制,你不能使用Babel的功能,所以在配置上你只能设置英文:
BABEL_DEFAULT_LOCALE = 'en'
BABEL_DEFAULT_FOLDER = 'translations'
LANGUAGES = {
'en':{'flag':'gb','name':'English'}
}