Flask入门指南.docx
- 文档编号:2098914
- 上传时间:2022-10-26
- 格式:DOCX
- 页数:7
- 大小:108.20KB
Flask入门指南.docx
《Flask入门指南.docx》由会员分享,可在线阅读,更多相关《Flask入门指南.docx(7页珍藏版)》请在冰豆网上搜索。
Flask入门指南
Flask入门指南
1.初识Flask
Flask是一个微框架(Microframework),其官方文档的前言部分对Flask做了很清楚的定性介绍:
微”(Micro)是什么意思?
微”(micro)并不意味着你要把整个web应用放到一个
python文件里(虽然确实可以),也不意味着Flask在功能上有所欠缺。
微框架中的“微”意味着Flask旨在保持核心功
能的简单而易于扩展。
Flask不会替你做出太多决策,比如
哪种模板引擎),都是很容易替换。
除此之外的一切都由可由你掌握。
默认情况下,Flask不包含数据库抽象层、表单验证,或是通过扩展来给应用添加这些功能,如同是Flask本身实现的
样。
众多的扩展提供了数据库集成、表单验证、上传处理及各种各样的开放认证技术等功能。
Flask也许是“微小”的,但它已准备好在复杂的生产环境中投入使用。
Flask尽量避免重复制造轮子,而是与已有的优秀轮子去结合,这使得Flask灵活、强大,且定制性更强。
Flask配置选项众多,均设置了合理的默认值,并会遵循一些惯例;配置选项均可以修改,但通常没必要修改,尤其是刚开始的时候。
这使得Flask易于上手。
2.FlaskVSDjango
Django和Flask是GitHub上star数量最多的2个Pythonweb
框架,网上也有很多文章对这两个web框架进行分析和对比,如:
Quora:
ShouldIlearnFlaskorDjango?
DjangovsFlaskvsPyramid:
ChoosingaPythonWeb
Framework
“海盗”用Flask,“海军”用Django
Flask和Django各有优劣,Gevin最初是基于Django做开发的,后来转向Flask,目前两个框架都在使用,就我个人而言,我对这两个框架比较如下:
1)Flask
Flask确实很“轻”,不愧是MicroFramework,从Django转向Flask的开发者一定会如此感慨,除非二者均为深入使用
Flask自由、灵活,可扩展性强,第三方库的选择面广,开发
时可以结合自己最喜欢用的轮子,也能结合最流行最强大的
Python库入门简单,即便没有多少web开发经验,也能很快做出网站非常适用于小型网站非常适用于开发web服务的API
开发大型网站无压力,但代码架构需要自己设计,开发成本取决于开发者的能力和经验
各方面性能均等于或优于Django
到与之类似第三方库
NoSQL数据库的配合远远优于Django
Flask比Django更加Pythonic,与Python的philosophy更加吻合
2)Django
Django太重了,除了web框架,自带ORM和模板引擎,灵
活和自由度不够高
Django能开发小应用,但总会有“杀鸡焉用牛刀”的感觉
Django的自带ORM非常优秀,综合评价略高于SQLAlchemy
Django自带的模板引擎简单好用,但其强大程度和综合评价略低于Jinja
Django自带ORM也使Django与关系型数据库耦合度过高,如果想使用MongoDB等NoSQL数据,需要选取合适的第三方库,且总感觉Django+SQL才是天生一对的搭配,
Django+NoSQL砍掉了Django的半壁江山
Django目前支持Jinja等非官方模板引擎
Django自带的数据库管理app好评如潮
Django非常适合企业级网站的开发:
快速、靠谱、稳定
Django成熟、稳定、完善,但相比于Flask,Django的整体
生态相对封闭
,也一定能
Django是Pythonweb框架的先驱,用户多,第三方库最丰富,最好的Python库,如果不能直接用到Django中找到与之对应的移植
Django上手也比较容易,开发文档详细、完善,相关资料丰富
就我个人而言,虽然我最初选择的Pythonweb框架是
Django,但当我开始研究Flask后,Flask就立刻成为我最喜
欢的框架,虽然有时基于Flask做开发时会借鉴Django上的
些优点,但Flask的地位却无可动摇。
另外,我记得Django的开发者曾经说过,Django出现的太早了,Flask才是Django最初预期的样子,个中意思,请自己品味,原文原话,我暂时没有找到,如果有朋友看到原话,麻烦给个链接。
3.Flask从入门到精通
3.1Flask入门
Flask上手非常容易,仅仅看完Flask官方文档中的Quickstart
部分,就可以实现简单的网站了。
当然,网站看起来好不好,与html,CSS和js水平有关,这不在Flask的使用范围之内。
接下来就Quickstart章节的内容做一点解释。
站:
fromflaskimportFlaskapp=Flask(__name__)
@app.route('/')defhello_world():
return'HelloWorld!
'
app.run()
简言之,只要创建一个Flask的实例(如上面的app),调用
由,下面的函数实现了访问该url时要运行的功能。
仅基于以上简单代码承载的逻辑,即可把任一个python库的功能转换成网站或简单的webapi,如果想开放RESTfulAPI,基
于这个逻辑从零开始做完成没有问题,虽然更好的方式是基于RESTful相关第三方库。
随着网站的功能的增加,代码的行数也会剧增,这时所有的代码都放到一个文件中会很难管理,因此,Flask虽然一个文件就可以实现一个网站,但即便做一个小型网站,最好的方式也是将不同的逻辑放到不同的文件中,文件的组织方式随个人喜好而定,可以借鉴他人优秀的代码,也可以自己摸索。
做一个网站,最基本的功能莫过于信息/错误的返回,页面的渲染,静态文件的加载,URL构建,session/cookie的使用,
request/response的处理等,这些在Quickstart中都有涉及,
掌握这些内容,做简单网站就足够了,即入门从Quickstart
着手即可。
3.2Flask精通若要精通Flask,仅仅通过Quickstart快速入门完全不够,那
的依然是『多使用、多思考、多看他人优秀的代码』,经验可能是编程世界里最恰当称之为掌握新技术的捷径的东西,而经验的积累却又是一个漫长的过程,靠的也是『多使用、多思考、多看他人优秀的代码』。
Flask的精通要靠自己努力,优秀的资料可以分享。
我在这里推荐几个我觉得不错的资料,欢迎大家补充。
(1)Flask官方文档
Flask官方文档写的还是相当不错的,作为学习Flask的第手资料没有问题,且Flask官方的Snippets,对开发很有帮助,也能避免开发者花太多时间考虑重复的轮子如何开发
(2)FlaskWeb开发
入门到精通,也是我建议的第一手Flask学习资料。
书中介
绍的Flask构建大型项目的架构方式,很是受用,很有实际意义。
(3)
上面图书作者的博客,是积累Flask开发经验的好资料
(4)WriteaTumblelogApplicationwithFlaskandMongoEngine这是MongoDB官方文档中的一个教程,也是学习Flask开发的一个很好案例,尤其适合Flask+MongoDB开发的应用场
Flask本身是一个非常优秀的Python库,阅读其源码对理解
Flask及提高Python开发水平非常有帮助。
这个资料虽然不直接与Flask有关,但对初学者,绝对有学习的价值
4.Flask与数据库
大部分网站都要用数据库软件来存储数据,数据库对于任何合作为一个专题展开讨论。
Flask与数据库直连来存取数据虽然没有问题,但会使应用与数据库紧耦合,不利于扩展,也会增加维护代码逻辑的工作量。
使用数据库抽象层,会简化Flask与数据库交互的逻辑,也使得Flask与数据库交互的逻辑转移到数据库抽象层搞定,
使业务逻辑更清晰,开发也更专注。
由于Flask是Micro
Framework,自身没有数据库抽象层,而Python生态下有非常多的数据库抽象层可供使用,对Flask而言option非常多,开发者可以选择最好的或自己最熟悉的数据库抽象层应用于开发。
接下来列举一些我熟悉或使用过的数据库抽象层。
4.1适用于关系型数据库的数据库抽象层适用于关系型数据库的数据库抽象层及ORM(Object
RelationMapping),适用于Flask有:
flask-sqlalchemy推荐
flask-peewee
4.2
种文档型的
适用于NoSQL数据库的数据库抽象层
NoSQL数据库非常多,MongoDB是其中
NoSQL数据库,由于MongoDB天生就是为互联网开发服务的,而我只用Flask+MongoDB做过开发,下面仅列出
MongoDB的抽象层:
Flask-MongoEngine推荐
MongoKit
Flask-PyMongo
5.Flask常用库
个强大的框架不仅要练好自己的内功,还要具备各种趁手
这让我
的武器和装备。
Flask易于扩展,为自己营造了优秀的生态环境,Flask生态下有各种各样的第三方库可供使用,们开发自己的应用时,更高效、更专注,也更稳定。
面列举一些我常用或了解的库,作为入门,熟悉了这些库,
应该很容易开发一个健壮强大的应用了。
flask-scriptflask-loginflask-admin
Flask-WTFflask-principalflask-restfulflask-api
Flask-Mail
Flask-Userflask-securityflask-babelflask-locale
5.2Flask常用库详情
flask-script
为Flask提供强大的命令行操作,与Djangoshell类似。
flask-login
Flaskusersession管理,提供诸如login_user,logout_user,login_required,current_user等功能,也是其他很多Flask库的基础。
flask-admin
为Flask应用提供操作简单且易于扩展的数据库管理界面,与Django自带的数据库管理app类似。
Flask-WTF
Flask与WTForms的集成,提供强大的Form安全和校验机
制,与Django内置的Form功能类似。
flask-principal
Flask强大的权限管理机制,灵活性强,提供了一个权限管理
的基础框架,是很多Flask权限相关扩展的基础。
flask-restful
个强大的FlaskRESTful框架,简单好用。
flask-api
相当于DjangoRESTFramewor
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Flask 入门 指南