作者:落单鸟人 | 2021-09-08 09:22
RT。我之前想学习这些框架,但是学了一些皮毛之后发现有点学不下去,总感觉少了哪方面的知识。想问问,学习这些框架需要哪方面的知识?该如何正确的学习?
回复内容:
我觉得 @盛迪说的对,先学,如果学的比较吃力就硬着头皮学,在学的过程中才能发现哪些知识点自己不懂,把不懂的知识点罗列起来,比如在学习Tornado时觉得
异步,这个东西不太明白,就可以
通过这一个知识点来展开如下学习计划:
- Don't be afraid,硬着头皮迈出第一步。
- google 何为异步?异步的概念?,搜索完之后你会发现又有很多没见过的知识,然后在记下这些陌生的知识点,看完你所google的内容。
- 把第二步整理的知识点(可能耗时较长)罗列出来,整理在一张干净的纸上。可能包括阻塞与非阻塞,异步与同步,事件循环,I/O复用(select/poll/epoll),Linux进程管理等一大堆知识点。任何人看到这一堆陌生的东西都会感到害怕,甚至像题主这样心生无力。毫无疑问,这是迈向第一步最为艰难的时刻。走出内心的恐惧就相当于成功了一半,剩下的无非就是如下云云。
- 把第三步陌生知识点大致google一番,记录其基础意义,做到洞察大局,略知一二,这样会让自己有个概念观,略懂后自然而然就增加点信心。然后总结下你的知识点所涉及到的其他知识点,如此循环,用Xmind构建待学知识点关系树。可能你在google的时候会有人介绍一些相关的书籍如《UNIX网络编程 卷1 (豆瓣)》等,记下这些书籍作为待读。(注意:不要陷入死循环)
- 好了,现在你明白哪些知识点是自己不清楚的了,哪些书籍是自己需要读的了。那就放松放松吧,看些简单的东西,如把Django文档first-steps Django documentation 好好看一遍写个小程序。如果期间遇到web前端相关陌生知识点也可循环1、2、3、4步骤。搞一些简单的东西后能更大的激发兴趣,有了这些想继续学的兴趣后再继续Next.
- 学完它!暂时不要着急去解决哪些陌生的知识点(解决它们或许比学一门框架还耗时),要记住你的初衷:学习一些python框架。继续顺着这些框架提供给你的文档,顺着框架知识脉络继续学。做的明了该框架的大概主体,反复学习,毕竟你不是一蹴而就的,你还会回头反反复复翻阅文档好几遍,如果一直沉浸在继续解决陌生知识点的情况下或许一年你都还没看完该框架。
- 应用它!写的越多,用的越多就越有灵感。比如flask多造一些轮子,如果是在公司则大胆引用(我一直很大胆的应用一些新的东西在公司的项目中,ps.公司就我一个后端 (囧.....))
- 系统性学习!几番学习后抽个时间对你的未知知识点进行一次大扫荡(或许你在写在用的过程中一些知识点自己已经慢慢清楚了,这就是时间价值),然后总结出一些系统性的体系(如:TCP/IP协议,Unix网络编程)。如题主提到的都是web框架,那么web框架无非就是python网络编程下对下层TCP协议以及应用层HTTP协议以附加的web应用构建如(路由,请求与响应,Cookie与Session,认证,数据处理,模板渲染等)以及ORM和进程管理等的处理。这些需要大量的学习才能逐渐把握的,这些东西随便在豆瓣读书一搜立马出来推荐的书单或书籍,mark之,没事的时候慢慢品悟。多读书读好书,久而久之就构建了自己的系统性知识了。
- 第一步没完成剩下全Over~
ps: 纯属个人建议,不带任何色彩。
推荐看下浅谈Python web框架
严格的说,需要的知识不限于:
1. HTTP协议及基础概念
2. HTML/CSS/JS基础知识(至少里面说明了前后端怎么交互)
3. 数据库基础知识
4. Python基本语法、概念、主要语言特性、包管理机制……
5. 具体要学的框架基础知识、结构,以及所谓「哲学」
6. 英语,文档/Wiki/StackOverflow/Github/搜索引擎使用、阅读方法(遇到问题查资料找解决方案用)
然而基本上可以边学边接触,其实也蛮省事的。
- python入门
- 前端开发(html、css和js)至少能大概看懂,会现学现用
- 这个直接上w3c网站现学,以后可以深入学习
- 了解至少一种前端框架如Bootstrap等
- 掌握网络编程
- 掌握数据库编程
- 重点掌握关系型数据库的设计和建模
- [11月1日编辑]补充下关于数据库的建议:
- 先了解下数据库的基本原理,对于新手,至少把SQL语句学好吧,配合ORM的API,能够熟练进行增删改查操作
- 学习数据库的设计和建模;这一步你可能需要有较多的实际经验才能达到熟练程度,但是在找工作的时候你需要具备这方面的基本能力
- 学习数据库性能调优;主要针对sql语句的调优,具备这方面能力将会成为你令面试官满意的亮点。至于数据库系统的内部调优,要求较少。如果项目中真的有这种需求,一般有架构师或者DBA专门来做
- 书籍推荐(针对mysql):
- MySQL性能调优与架构设计 (豆瓣)---适合初级web开发
- 高性能MySQL (豆瓣)---中高级web开发进阶必备
- 数据库系统实现 (豆瓣)---同上
- 最后:
- 时间充足的话建议了解redis、mongdb等新兴数据库技术,在很多python项目中有运用,也很适合作为技能亮点
- 开始学习框架
- 比如django,重点要理解MVC的设计模式,明白 “url路由->views视图处理->orm数据库处理->jinja模版渲染” 的脉络,以及django强大易用的后台管理(个人建议从django入手,虽然比flask要重,但是社区资源更丰富,问答也更成熟)。
- 英语(你需要查阅官方文档)
- 这个真的很关键!只看中文文档或者国内中文网站资料,只能让你入门而已。
这些知识点的学习顺序可以随意,最好是按照自己的兴趣来,如果学习某个知识的时候遇到了阻塞,不要停留太久(滞留越久,越容易失去信心和兴趣),转向另一个知识点。事实上同时学习几样技能,可以相互融会贯通,互相启发,更有利于持续学习和全面理解哦!
网络编程和数据库编程!网络编程和数据库编程!网络编程和数据库编程!重点学习这两个,是web应用功能实现的基础!如果想要做漂亮的web应用,那就深入学习前端开发,重点是框架的使用(如Bootstrap等)。最后,自己一定要写几个web应用玩玩。可以先找些教程跟着写几个;然后一定要有一个是按照自己想法独立实现的(例如个人博客),这一步会让你开始感受到成就感!
项目驱动学习!
有明确的目标,或者有明确的要求,或者个人极为喜好,或者不学就没饭吃,的情况下就去努力的学吧。
有了目标就使劲学,拼命学。不死不休。页面渲染、url设计、HTTP知识、工程代码结构设计、ORM或者直接数据库查询的方法、数据库设计、缓存的使用、服务的打包构建部署、服务的水平扩展性等等,哪里遇到问题就网上搜使劲查拼命啃。
没有目标的话,建议还是别学了,真的,不是打击人,而是漫无目的学的东西及时掌握了一时,在不久的将来也会很快忘掉……
你去学啊,不学怎么知道,学的时候就知道了
python
HTTP基础知识要了解
html
css
javascript要知道点
数据库
恩差不多就这些了,不是都要学会,而是在学这些框架都要用到,比如数据库,其实也就用个基本的增删改查,但是没有数据库不行。
从0写一个网站,比你干巴巴的学,更有效率。
当然,这有一种缺点,学的不全。
标准库标准库标准库
照着教程做项目,自己敲代码。遇到不懂的,就回头再看教程,查资料,弄懂为止。顺便推荐下廖雪峰的教程和Flask Web Development: DEVELOPING WEB APPLICATIONS WITH PYTHON。