‘壹’ 有多少人按@萧井陌大神给出的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怎么网页不稳定
换代理服务 FLASK自带的wsgi中间件不是特别好用。你可以换nginx 或者APACHE 设置代理访问 flask网站 这可能是原因之一。
其他原因还得综合分析。毕竟不稳定这种事 不是不能访问。
‘叁’ python flask 问题
可以用jinja2模板里面的if。这样渲染是在服务端完成的。不需要js。
{%ifd2[1]==1%}
<p>hehe</p>
{%else%}
<p>haha</p>
{%endif%}
‘肆’ python flask 怎么组织程序
1.初始化
所有的flask程序都必须创建一个程序实例
web服务器使用wsgi接口协议,把接收客户端的请求都转发给这个程序实例来进行处理。这个程序实例就是flask对象
from flask import Flask
app = Flask(__name__)
#__name__决定程序的根目录,以便以后能找到相对于程序根目录的资源文件位置
2.路由和视图函数
程序实例需要知道接收请求后,需要知道url请求应该运行哪些代码。所以保存了一个url和python函数的映射关系;这个映射关系就叫做路由
flask程序中路由的写法:
2.1#使用app.route装饰器,把修饰的函数注册为路由。例如
@app.route('/')def index(): return "<h1>Hello World</h1>"
#函数的名字不是必须写index的,只是和装饰器关联的时候写的函数名而已
#把index函数注册为程序根路径的处理程序。函数的返回值称为响应,是客户端接收的内容。
像index这样的函数称为试图函数,试图函数返回的响应可以是包含html的简单字符串,也可以是复杂的东西
2.2#可变url部分映射,使用特定的装饰器语法就可以
@app.route('/user/<name>')def user(name): return "<h1>hello %s</h1>"%(name)
装饰器中的<name>指定可变内容为name,name对user(name)函数中的传递参数,这2个部分内容必须一致
调用试图函数时候,flask会自动的将动态部分作为参数传入参数,这个函数中,参数用于生成个人的欢迎信息
#备注:路由中的动态部分默认使用字符串类型,可以使用int,float,path来定义;例如<int:id>;path类型也是字符串,但不把斜线视作分隔符,而将其当做动态片段的一部分
3.启动服务器
调用程序实例app的run方法启动flask集成开发的web服务器
if __name__ == "__main__":
app.run(debug=True)
debug=True代表的是调试模式,这个flask自带的run方法开启的服务器不适合在生产中使用,此处只用来测试
4.一个完整的Flask程序
啥也不说,先上例子hello.py
‘伍’ python,flask代码 需要完整的代码
‘陆’ 对于python而言,阅读flask框架的源代码感觉入门困难(从最早期的版本开始阅读的),无法体会到精髓
编程最重要的是自己的兴趣以及对解决问题本身的投入程度, 也要看自己对技术的应用频繁程度。
有些技术比如django,有人有机会在3个月内需要开发一个web系统,而且各种功能和性能都有要求, 那这个人成长就很快。有些人比如用django开发一个小系统而且时间不着急, 两个人的学习密度就完全不一样。
所以解决问题本身以及自己给自己施加的压力才是保证自己学习效果的最好方法。等到自己多解决几个问题自然就知道自己下一步该做什么了, 所以无法给你一个具体的时间, 遇到问题就想办法解决并做好,然后反复的问自己还能不能做的更好,或者还有没有细节没有解决, 多深入细节很重要。
‘柒’ python中flask包使用的问题,详细描述请看下面
我还是第一次见你这种写法呢
首先可以肯定的是:你对面向对象不熟,其次多看一下官方文档
错误出现的原因:你的 index(self) 添加了 self 参数,说明是类对象函数。那么你就需要先实例化一个对象
cs=CloudStore()
cs.webapp.run()
如果你不想这么干呢
classCloudStore(object):
@webapp.route('/')
@classmethod
defindex():
pass
这样 添加classmethod 这样就不用实例化对象了
‘捌’ 《FlaskWeb开发实战入门、进阶与原理解析》pdf下载在线阅读,求百度网盘云资源
《Flask Web开发实战》(李辉)电子书网盘下载免费在线阅读
资源链接:
链接:https://pan..com/s/1yCc2Mfn65pn-d3GDQqBGKQ
书名: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)上,你可以了解到关于他的更多信息。
‘玖’ 【Python基础】flask是什么意思
Flask 是一个微框架(Micro framework),其官方文档的前言部分对Flask做了很清楚的定性介绍:
“微”(Micro)是什么意思?
“微”(micro) 并不意味着你要把整个web应用放到一个python文件里(虽然确实可以),也不意味着Flask 在功能上有所欠缺。微框架中的“微”意味着 Flask 旨在保持核心功能的简单而易于扩展。Flask 不会替你做出太多决策,比如使用何种数据库。而那些 Flask 帮你做好的决策(比如使用哪种模板引擎),都是很容易替换。除此之外的一切都由可由你掌握。
默认情况下,Flask 不包含数据库抽象层、表单验证,或是任何已在其它已库中处理的很好的功能。相反,Flask 支持通过扩展来给应用添加这些功能,如同是 Flask 本身实现的一样。众多的扩展提供了数据库集成、表单验证、上传处理及各种各样的开放认证技术等功能。Flask 也许是“微小”的,但它已准备好在复杂的生产环境中投入使用。
Flask尽量避免重复制造轮子,而是与已有的优秀轮子去结合,这使得Flask灵活、强大,且定制性更强。 Flask 配置选项众多,均设置了合理的默认值,并会遵循一些惯例;配置选项均可以修改,但通常没必要修改,尤其是刚开始的时候。这使得Flask易于上手。
‘拾’ Flask框架怎么样,比起Web.py有哪些不同
Flask是一个使用Python编写的轻量级Web应用框架,凭借更灵活、轻便、安全且容易上手的特性,成为企业常用的Python框架之一。在完成Web前端、Linux以及MySQL相关的课程之后,专业的杭州Python学习班都会讲解Flask框架知识,以下是整理的相关知识点。
Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架。开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器。
默认情况下,Flask不包含数据库抽象层、表单验证,或是其它任何已有多种库可以胜任的功能。然而,Flask支持用扩展来给应用添加这些功能,如同是Flask本身实现的一样。众多的扩展提供了数据库集成、表单验证、上传处理、各种各样的开放认证技术等功能。
Flask框架的特点:
1)Flask自由、灵活,可扩展性强,第三方库的选择面广,开发时可以结合自己最喜欢用的轮子,也能结合最流行最强大的Python库;
2)入门简单,即便没有多少web开发经验,也能很快做出网站;
3)非常适用于小型网站;
4)非常适用于开发Web服务的API;
5)开发大型网站无压力,但代码架构需要自己设计,开发成本取决于开发者的能力和经验。
Flask框架运行解释
1.app = Flask(__name__)
创建Flask对象app,Flask类的构造函数只有一个必须指定的参数,即程序主模块或包的名字。在大多数程序中,Python的__name__变量就是所需要的值。
[email protected]('/')
web浏览器把请求发送给Web服务器,Web服务器再把请求发送给Flask程序实例。程序实例需要知道对每个URL请求运行哪些代码,所以保存了一个URL到Python函数的映射关系。处理URL和函数之间的关系的程序称为路由。在Flask程序中定义路由的最简便方式,是使用程序实例提供的app.route修饰器,把修饰的函数注册为路由。route()装饰器告诉 Flask什么样的URL 能触发我们的函数。这和Java中的注释有异曲同工之妙。修饰器是Python语言的标准特性,可以使用不同的方式修改函数的行为。惯常用法是使用修饰器把函数注册为事件的处理程序。
3.def index():函数
index()函数放在@app.route('/')后面,所以就是把index()函数注册为路由。如果部署程序的服务器域名为http://127.0.0.1:5000/,在浏览器中访问http://127.0.0.1:5000/后,会触发服务器执行index()函数。
[email protected]('/user/')
同@app.route('/'),如果部署程序的服务器域名为http://127.0.0.1:5000/,在浏览器中访问http://127.0.0.1:5000/后,会触发服务器执行下方修饰函数。
5.app.run(debug=True)
程序实例用run方法启动Flask继承Web服务器。
6.if __name__ == '__main__'
当Python解释器,读py文件,它会执行它发现的所有代码。在执行代码之前,它会定义一些变量。例如,如果这个py文件就是主程序,它会设置__name__变量为"__main__"。如果这个py被引入到别的模块,__name__会被设置为该模块的名字。