① 如何理解Flask
去年做过一个不大不小的Flask项目,这边分享下我的做法: 读Flask源码确实需要读Werkzeug的源码,Jinja2的源码则可以先晾在一边,原因是在框架结构上Flask与Werkzeug结合的更紧些,例如我们在一次HTTP请求上下文中使用的request实例,就是通过We。
② 有什么python项目源码阅读工具
如果一定要推荐一些 python 的源码去读,我的建议是标准库里关于网络的代码。从 SocketServer 开始,补上 socket
模块的知识,熟悉 TCP/UDP 编程,然后了解 Mixin 机制的最佳示例
SocketServer.{ForkingMixIn|ThreadingMixIn},借这个机会了解 thread/threading
模块,这时会对并发量提出新的要求,就可以读 select 模块,开始对 select/{epoll|kqueue}
有深刻理解,搞懂以后就可以接触一下异步框架 asyncore 和 asynchat。这时开始出现分岔。如果是做 game 等以 TCP/UDP
协议为基础的应用,可以去读 greenlet 和 gevent,如果是做 web,则走下一条路。
做 web,读
BaseHTTPServer、SimpleHTTPServer 和 CGIHTTPServer,读
cgi/cgitb,自己随意写框架,读cookielib,读 wsgiref,这时候自己写一个简便的 web framework 就 so
easy 了,老板再也不担心你写 web 了,选择 flask/web.py/django/pyramid 都心中有数了。因为走的是 web
的路,所以难免要调用一下别人的 api,搞懂一下 httplib/urllib/urllib/urlparse。
③ 有多少人按@萧井陌大神给出的Python+Flask路线找到工作了
已经按照 python + web 的路线找到工作。
工资不高,省吃俭用勉强收支平衡,但总算是转职成功了。
背景
年龄:1987.10
学历:末流大专
基础:会用电脑
人脉:0,无相关专业朋友及网友
简历:套了个流行的模板,内容流水账,无任何包装和技巧
时间线
2015.9.3 开始自学
2016.2.18 投简历,共投出10份,3个面试,4个不合适
2016.2.24~25 面试
2016.2.25 拿到两个offer,选择了其中一个
自学过程
2015年9月: 完成coursera的python交互程序设计入门。
本来根本没有转职的打算的,当时无意间点进了S1外野的一个讨论编程的帖子,然后看到有人说coursera上这套python教程让他感到打开了新世界的大门,然后我就去搜了下coursera python(那天正在下载i社的新作,等待的时候,人总是容易失去理智),然后我就参加了这门课,当时只是觉得coursera是个挺高大上的东西,试一下总是一种体验,完成了week 1的课程后,发现week 2的课程得等一个礼拜后的互评结束后才能观看。简单搜索一下后,找到了全部的视频,还带字幕的。课程的内容很简单,就是 用简单的条件判断语句 + 简单的面向对象 + 课程提供的gui库 来写一些小游戏,比如第二周的课程是乒乓。后面的三周时间几乎是废寝忘食的利用所有空闲时间完成了这套课。这是人生中头一次体会到编程的乐趣,虽然代码糟糕的很,毫无技巧,也不优雅,然而程序跑通的那一刻,得到的体验仍然胜过一切,无论是苦刷三天爆了件神装,还是万智牌绝境下神掏逆转,或者是围棋比赛中殚精竭虑战胜了比自己强的对手,都无法与之相比。
2015年10月:辞职自学,路线确定 python web,用flask写了个人blog。
琳琅满目的自学编程路线中无一不是罗列了一堆砖头书,从数学基础到编译原理,我相信推荐人都是好意,然而一个零基础自学的人,得有多大的热情,才能在没有什么反馈的情况下,坚持到学完所有的基础?
这时候看到了萧井陌的答案:“flask源码读懂,就能找到工作”
于是开始学flask,书用的是miguel的那本《flask web开发》,另外有本《explore flask》做参考
这个月比较辛苦,因为啥都不会,照着书敲,前两周大脑一片混沌,总之各种报错,各种搜索,各种补基础,miguel是个好人,长期在他的blog上回答关于他书中的问题。后面敲多了,对MVT框架也就比较清楚了,搜索的内容从清一色的“又报错了,救命TT”,变成了“我想实现这个功能,咋整”。总之在10月31日倒腾出了一个脆弱的个人blog,顺便部署到了sae。
有个插曲,不知道是不是搜了太多的技术名词,某天google的搜索页面变成了星战片尾字幕的效果,然后眼前一黑,进入了一个shell环境,里面是google的试题,可惜当时太弱。
2015年11月~2016年1月:刷题,堆技术栈
checkio刷了一百题
pythonchallenge完成前28关
leetcode每个tag都做了几题
汇智、codecademy的交互式教程看了前端和数据相关的
读完大部分《Problem Solving with Algorithms and Data Structures》
读完大部分《深入 Python 3》
读完一半以上的py3.5标准库
读了一部分cookbook
读了so的一些高票答案
读了很多关于web的技术文章
2016年2月:思考人生,看了几天海,学django,模仿todoist写了个简化版,投简历
这个月内心有些动摇,因为搜了半天没找到年龄大学历低无人脉的人转职成功的先例,更害怕的是投出简历连面试机会都没有,所以用一个多礼拜学了下django然后写了个简单的todolist,打算投几份简历试试,结果没想到,居然成了
其他
关于拖延症:
一个人自学是很容易堕落的,在家里,一不小心,刷刷论坛,一天就过去了。
我自己的拖延现象是非常严重的,虽然已经尽力控制,但还是浪费了不少时间。
我控制拖延的方法,简单的说就是:计划 + 启动。
建议找一款时间管理软件,我用的是 todoist 和 番茄薯仔。
每天起床后花半个小时规划一下一天要做的事情,写进todolist。
写了一堆计划,但最后没完成的多少的现象也是很常见的,所以关键是得开始。
任何事情只要开始做就不那么难了,如果计划列表里的某个任务让你拖延很久确不去做,那你可以试试将这个计划分解成很多简单的步骤。
比如说,你的todolist有一项是 [加入功能A],迟迟不开始是因为这功能实现起来很麻烦。那么这时候可以考虑把 [加入功能A] 改为 [‘搜索问题的答案’,‘读文章找头绪’,'github找现成的实现','读懂别人的代码',‘实现自己需要的功能’],如果还是不愿意动手,可以继续细分,细化到 [打开浏览器,输入问题,点击搜索] 这种程度总能开始做事了。
关于英语:
感觉没必要刻意去学,平时多用就行,比如可以 把刷知乎、贴吧、S1的时间用来刷quora、4chan、reddit,平时追的漫画,先看英文肉。
关于提问:
我自己是完全的闭门造车状态,没有在任何平台提问过任何技术问题。
首先大部分问题都能直接搜到答案。
其次搜不到答案的问题,很大可能是问题描述有问题。
如果问题描述精准且真的搜不到答案,那么“大神”们回答问题的成本也不低,而我又不是妹子,所以实在搞不定的问题宁可遗忘,也不提问。(哪里会有人喜欢孤独,不过是不喜欢失望.)
关于未来:
我知道,我现在只是一个勉强入门“中小型开源Web应用二次开发者”
我很难赶上那些,十几岁开始学,二十几岁就成为行业顶尖的人
但我28岁的时候开始学,38岁的时候至少能成为一个比较成熟的程序员吧
④ python,flask代码 需要完整的代码
⑤ 对于python而言,阅读flask框架的源代码感觉入门困难(从最早期的版本开始阅读的),无法体会到精髓
编程最重要的是自己的兴趣以及对解决问题本身的投入程度, 也要看自己对技术的应用频繁程度。
有些技术比如django,有人有机会在3个月内需要开发一个web系统,而且各种功能和性能都有要求, 那这个人成长就很快。有些人比如用django开发一个小系统而且时间不着急, 两个人的学习密度就完全不一样。
所以解决问题本身以及自己给自己施加的压力才是保证自己学习效果的最好方法。等到自己多解决几个问题自然就知道自己下一步该做什么了, 所以无法给你一个具体的时间, 遇到问题就想办法解决并做好,然后反复的问自己还能不能做的更好,或者还有没有细节没有解决, 多深入细节很重要。
⑥ 使用flask开发的网站有哪些
Python 生态圈有两个现象级的 Web 框架 Flask, Django.
两个框架风格迥异, 但是都各自带动了庞大的生态圈, 这得益于二者灵活的扩展能力.
本书讲述的是基于 Flask 开发 Web 项目.
在对 Flask 框架的各个部分简要分析后, 本书介绍了
* 表单处理(Flask-WTF)
* 持久化(Flask-SQLAlchemy, 这货作者就是 Flask 的作者哟)
* 邮件
* 配置
* 一个真实案例: 模型, 用户验证, 角色, 关注, 写template, 写API
# 特点
* 线程局部变量
我不知道该把这个称作特点还是缺点.
至少在Flask的文档中作者明确给出这样的解释: 作为一个码农, 你也许会感到不适, 但我就想这样设计.
大部分的 Web 框架, 请求对象是外部注入的, 唯独 Flask 选择了全局 (flask.request, flask.g).
这个特点存在意味着你要小心使用这个特性, 否则很容易遇上需要调试大半天的Bug.
另外, request 不是那么容易造出来的.
不过, 这不是什么大不了的事情.
这个顺便波及到测试, 测试的setup 与 teardown, 你必须去营造一个上下文, 关于这点, 书中有讲解如何操作.
* Route/Template
框架的路由使用的是Werkzeug.
Template使用的是Jinja2, 当然不喜欢的话, 用别的也很简单.
* 足够小
Flask 只封装了请求, 路由, 模板这么几个功能.
用起来容易, 要写好也得费点脑子涨点经验才行.
说穿了也就是一句话:
> The idea of Flask is to build a good foundation for all applications.
> Everything else is up to you or extensions.
[Ref: What Flask is, What Flask is Not](http://flask.pocoo.org/docs/design/#what-flask-is-what-flask-is-not)
# 工作流
常规的三板斧: 开发, 测试, 部署.
书里面的部署和配置这两章节讲的很出色, 值得一读, 我给打五星.
# 插件
借用 @死鱼眼28号 常说的一句话, 很多 Flask 插件都写得很渣.
我表示 +1.
挑选插件时记得看下插件源码, 给作者的码力打个分再决定要不要用.
# 后记
关于 Web 开发, 我们的选择有很多:
* PHP(Laravel, CodeIgniter, Yii, Symfony, CakePHP, etc.)
* Ruby(RoR, Sinatra, etc.)
* Python(Flask, Django, Quixote, Web.py, Bottle, etc.)
* Java/Scala(Spring, Play!, etc.)
殊途同归, 他们也给出了几乎一样的解决方案.
我们可以看到大部分的 Web 项目都有着类似的目录分类, 类似的架构.
Flask 也不外乎如此: 帮你包装好请求对象, 剩下的路由, 路由逻辑, 响应内容你来填.
上面大部分框架从大学到工作或多或少使用过, 其实真正写到业务层面时, 框架那些都不是事儿.
你想要的东西, 或框架自己造, 或怂恿队友帮你造, 或你自己造, 总之基本上你总能拿到你要的信息.
不要被框架局限了视野哟.
⑦ 如何阅读Flask源码
去年做过一个不大不小的Flask项目,这边分享下我的做法:
读Flask源码确实需要读Werkzeug的源码,Jinja2的源码则可以先晾在一边,原因是在框架结构上Flask与Werkzeug结合的更紧些,例如我们在一次HTTP请求上下文中使用的request实例,就是通过Werkzeug的LocalProxy包装实现的。而Jinja2则完全集中在模板渲染上,如果题主目前的主要任务是理清“HTTP请求响应流”在框架代码中的走向,那么Jinja2部分可以先作为黑匣子。
怎么切入,我认为最好的方法是在您的View Handler中用ipdb下一个断点,然后启动程序并在浏览器中访问该页面,当运行到断点时,Python进程那边已经切换到ipdb的调试模式,您可以通过步进并随时查看当前代码所处的文件、对应行数,以及当前的堆栈帧。
第一次用ipdb下断点查看时,不需要在意当前到达的每一步位置的上下文代码,只要记住我在哪个文件的哪个函数(方法)中,这样一遍走下来,您对一次HTTP请求会依次经历Flask框架中的哪些部分有个初步印象。
接下去,就是打开这些“框架部分”对应的源码文件进行宏观阅读了,这是第二步,如果有经验,能够凭直觉一眼看出(或通过方法名、或通过代码的自文档化)此处是在做什么。如果第一步用ipdb调试是在脑海中对框架打轮廓,那么第二步做完后,已经对这个框架实现有较为清晰、整体的认识了。
第三步,根据第二步所建立的认识,继续使用ipdb打断点并调试,但在这次,需要仔细地“打量”当前上下文,例如上面说的查看堆栈帧、或者通过locals()、globals()查看当前名字空间的变化,第三步的作用是为第二步所建立的概念模型进行实践验证,以加强理解
如此反复二三两步,对框架主要部分实现的认识则会愈加清晰,把握住框架主脉络后,对于其他模块,例如signals、session,则可以逐个击破了。
另外,Flask还会直接依赖itsdangerous这个库,我认为也可以了解下。
我现在还在看Flask源码,原因是它的文档字符串写得很棒,可以作为我在其他项目使用sphinx-doc组件实践时很好的模板:)。
⑧ 《FlaskWeb开发实战入门、进阶与原理解析》epub下载在线阅读,求百度网盘云资源
《Flask Web开发实战》(李辉)电子书网盘下载免费在线阅读
资源链接:
链接:
书名:Flask Web开发实战
作者:李辉
豆瓣评分:8.9
出版社:机械工业出版社
出版年份:2018-8-1
页数:704
内容简介:这是一本面向Python程序员的,全面介绍Python Web框架Flask的书。关于本书的详细介绍、相关资源等更多信息可以访问本书的官方主页http://helloflask.com/book了解。
• 国内首本Flask着作,在内容上涵盖完整的Flask Web开发学习路径,在实践上包含完整的Flask Web程序开发流程。同时兼容Python2 .7和Python3.6。
• 内容最新,基于Flask 1.0.2版本,所有的Python库、前端框架和JavaScript库均使用最新版本。
• 内容全面,除了基础知识,还包含Web API、全文搜索、国际化和本地化、第三方登录、AJAX、WebSocket、源码分析、扩展开发等实用内容。
• 实战性强,包含8个示例程序,5个实战项目和1个Flask扩展。实战项目包括留言板、个人博客、图片社交网站、待办事项程序和聊天室,分别对应不同的知识点,难度递增。
• 5个实战项目的Git标签经过精心设置,每个标签都对应新增的某个程序功能。
全书所有章节均经过精心设计和编排,力求满足不同水平读者的需要,并且让读者可以循序渐进的掌握Flask开发知识和技巧。
• 通过丰富的图表和代码示例讲解复杂知识点,尽量做到通俗易懂。
本书共16章,分为三部分。
第一部分 基础篇(第1~6章)
通过大量的程序实例详细介绍了Flask的所有基础知识,同时在每章的后面又提供了一些进阶技巧,供进阶读者学习。
第二部分 实战篇(第7~11章)
通过5个真实的项目案例来串接和阐释不同的知识点,难度逐渐递增。这5个案例分别为:留言板SayHello、个人博客Bluelog、图片社交网站Albumy、待办事项程序Todoism和聊天室CatChat。
第三部分 进阶篇(第12~16章)
首先介绍了Flask程序的部署流程:测试、性能优化和部署上线;然后通过一个真实的实例讲解了Flask扩展的开发,最后以源代码为切入点深入剖析了Flask的实现原理与主要工作机制。
作者简介:李辉(Grey Li),Flask官方开发团队(Pallets Team)成员,知乎专栏“Hello, Flask!”作者,HelloFlask.com网站创建者。对Flask有非常深入的研究,熟悉它的源代码,有丰富的项目经验。
他热爱分享和创造,曾为Flask等多个开源项目贡献过代码,你可以在GitHub(github.com/greyli)上看到他的开源活动。在他的个人网站(greyli.com)上,你可以了解到关于他的更多信息。
⑨ Django和Flask这两个框架在设计上各方面有什么优缺点
一、整体设计方面
首先,两者都是非常优秀的框架。整体来讲,两者设计的哲学是区别最大的地方。
Django提供一站式的解决方案,从模板、ORM、Session、Authentication等等都分配好了,连app划分都做好了,总之,为用户做尽量多的事情,而且还有一个killer级的特性,就是它的admin,配合django-suit,后台就出来了,其实最初Django就是由在新闻发布公司工作的人设计的。
Flask只提供了一些核心功能,非常简洁优雅。是一个微框架,其他的由扩展提供,但它的blueprint使它也能够很方便的进行水平扩展。
二、路由设计
Django的路由设计是采用集中处理的方法,利用正则匹配。Flask也能这么做,但更多的是使用装饰器的形式,这个有优点也有缺点,优点是读源码时看到函数就知道怎么用的,缺点是一旦源码比较长,你要查路由就不太方便了,但这也促使你去思考如何更合理的安排代码。
三、应用模块化设计
Django的模块化是集成在命令里的,也就是说一开始Django的目标就是为以后玩大了做准备的。每个都是一个独立的模块,为以后的复用提供了便利。
Flask通过Blueprint来提供模块化,自己对项目结构划分成不同的模块进行组织。
四、配置
Django的配置主要还是靠settings.py来做,当然为了Development和Proction环境分离,还有一些方法来处理配置。
Flask的配置很灵活,有多种方法配置,不同环境的配置也非常方便。
五、文档
两者都提供了详尽的文档,Django的文档也非常优秀,当时用学Django时,就是只看了Django的文档。
六、社区
Django社区很大,各种插件很齐全,大部分情况下你都能找到想要的。
Flask起步晚,但社区也不小,之前有一次看在github上的star数,两个相差并不远,说明越来越多的人关注,虽然插件没那么全,但常用的还都是有的,而且质量都比较高。
最后再次说一下,两个都是非常优秀的框架,很多时候选用这些框架是根据实际项目侧重不同来选的