Python 笔记五:Flask的N种可能性
图片来自 [官网](http://dormousehole.readthedocs.io/en/latest/)其实,Flask框架教程太多,我不能把所有功能都写一遍,也没有意义。我也不是计算机出身,写得也没他们好。所以这个笔记从我自己角度出发,有不同意见请留言。
从我自己的角度出发,我希望一个微框架,很容易上手。Django明显不合适,Tornado虽然好,但是要造轮子,所以还是适合一些纯计算机大神使用。我们不太适合。
可能一:传统Flask
入门教程可以参考被翻译的Flask教程,英文原文,这是一个很基础的教程,运用了一些官配的控件,其中包括jinja模板,sqlalchemy的ORM:
- flask 主体
- flask-login 登陆验证
- flask-openid 第三方openID验证
- flask-mail 发送Email
- flask-sqlalchemy 官配ORM
- sqlalchemy-migrate 数据库迁移
- flask-whooshalchemy
- flask-wtf web表单
- flask-babel JS新语法兼容库
- flup python写的Web Server
这个教程也有它的局限性,太老了。结合现在的Web趋势,大家对Jquery和模板前段框架越来越不重视,更多是Angular等MVVM框架加上Rest服务的后端。所以我的聚焦点在Flask的扩展多,适合超快速开发,和GIS不谋而合的特点,我更推荐下面一种方式。
可能二:Flask和Angular结合
运用AngularJS和Flask-Restful的组合,可以参考generator-angular-flask
安装
和一般Yeoman的generator一样,首先我们安装Yeoman:
npm install -g yo
然后安装generator:
npm install -g generator-angular-flask
安装完毕,这时候可以构建项目可以输入yo
然后选择,或者直接输入
yo angular-flask
然后创建一个虚拟环境python virtualenv.py
,安装python的包,./install.sh
for linux install.sh
for windows,然后就可以正式开工。
入门
创建一个实体
yo angular-flask:entity [myentity]
同样数据库的创建,迁移,升级和降级可以通过db_create.py
,db_migrate.py
,db_upgrade.py
,db_downgrade.py
来完成。
服务端 flask/bin/python run.py
for Linux flask/scripts/python run.py
for Windows
客户端 grunt server
可能三:Flask和Vue.js结合
几经周折,我看上了Vue.js的这MVVM框架。由于它轻量易用,上手极快,结合了Angular和React的一些优点,如果你懂得Angular,想上手Vue.js是很轻松的一件事。而且Vue.js是个中国人写的,我对其产生一种特别的好感,轻量级的解耦的选择可以说,和flask框架之间有一种特殊的共同点。
这里举一个github的例子基于Vue和Flask的免准考证四六级成绩查询,这个例子简洁明了,将flask作为一种rest服务,可以采用flask + gevent + gunicorn + nginx的部署方式。熟悉flask的同学一定知道,在初始化flask,即app = Flask(__name__)
。通过解释器去分配对应的路由,路由中带有参数ticket
和username
,并将查询结果整理成为json输出。
@app.route('/GetCetScore/<ticket>/<username>',methods=['POST','GET'])
def get_cet_score(ticket, username):
ct = CetTicket()
try:
result = ct.get_score(ticket, username)
result['ticket'] = ticket
except:
result = {'Status': '0', 'Contact_us': 'wangyuan.info'}
return jsonify(result)
前端则是将每个页面组件化,把对应的的服务写在对应的组件当中。详情参考1简单入门和2进阶[译]用Webpack构建Vue,可以参考我的Leaflet 笔记四:Vue-leaflet。
转载,请表明出处。总目录Awesome GIS
转载,请表明出处。总目录后端记事本
微信公众号
网友评论