Python 笔记五:Flask的N种可能性

作者: brandonxiang | 来源:发表于2016-02-03 11:02 被阅读5073次

Python 笔记五:Flask的N种可能性

其实,Flask框架教程太多,我不能把所有功能都写一遍,也没有意义。我也不是计算机出身,写得也没他们好。所以这个笔记从我自己角度出发,有不同意见请留言

详情awesome-flask

图片来自 [官网](http://dormousehole.readthedocs.io/en/latest/)

从我自己的角度出发,我希望一个微框架,很容易上手。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.pydb_migrate.pydb_upgrade.pydb_downgrade.py来完成。

服务端 flask/bin/python run.py for Linux flask/scripts/python run.py for Windows

客户端 grunt server

参考angular-flask的Github项目

可能三: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__)。通过解释器去分配对应的路由,路由中带有参数ticketusername,并将查询结果整理成为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

转载,请表明出处。总目录后端记事本

微信公众号

相关文章

网友评论

    本文标题:Python 笔记五:Flask的N种可能性

    本文链接:https://www.haomeiwen.com/subject/yyzjkttx.html