作者:陈鑫杰(拼客学院院长)

 

#### 前言

在去年(2016年),我们推出了《Python编程基础课》,当时给大家的一个建议是:虽然大家不是做软件开发的,但是作为网络/运维/安全从业者,熟悉一门编程语言,能够让自己有更充足的底气。尤其这两年校招和社招岗位,很多企业多了“掌握或熟悉Python编程语言”这一加分项。而今年(2017年),我们在Python课程的基础上,加入了Web这个系列课,带领大家掌握并熟悉一个Web框架,并且了解Web安全的攻防体系。

 

那么,为什么要学习Web? 我们又不需要开发网站,也不是做APP的,学Web开发&安全的意义在哪里?

如果你的定位是网络安全工程师,例如,在拼客学院这里学习的小伙伴,进入绿盟科技/天融信/深信服/启明星辰/360等安全公司,或者进入国企等安全部门,我们是做什么安全方向的?我们做的不是安全研发工程师,而是安全运维、安全服务(等保/分保)、安全产品售后(技术支持/售后),如果想再往上走一步,将安全进行到底,提高自己的从刚入行待遇,例如7k~8k变为10到12k,那么应该怎么做?那么,就是从安全服务/售后,慢慢升级到安全渗透/Web渗透,甚至安全研发,基于此,我们需要掌握Web,因为大量的我们服务的国企/银行/运营商等甲方单位,他们的核心业务就是基于Web来提供的。

如果你的定位是网络工程师,例如你在运营商(移动/电信/联通)做网络运维,或者你在系统集成商做网络集成(亚信/华讯/中企通信),这两年一定听到或者接触到SDN的产品或者方案,因为未来的网络是“软”的、可编程的、虚拟化的、云端的。而学习和研究SDN,你必须熟悉一个SDN控制器,例如ROX/POX,或者ONOS/OpenDayLight,而这些技术的背后,如果你熟悉一个Web开发语言,可以让你更快的入手SDN。

如果你的定位是(系统)运维工程师,提高职业竞争力,从单纯的“配置熟练工”角色,慢慢转变为高级运维或者运维开发工程师,希望用更编程化,更可视化的方式来管理大规模的服务器。那么,掌握Web开发,可以让自己根据企业应用场景,快速搭建一个自动化/可视化的运维平台,帮助你更加高效提高生产力。

Anyway,不管是网络工程师、安全工程师、或者是运维工程师,熟悉一个Web框架,都是我们技术全栈路线或职场升级路线的必经之路。

 

那么,为什么选择以Python/Django来讲Web开发/安全,而不是PHP和Java呢?

Python已经毫无疑问成为未来的语言,代码简洁、语法清晰,对于非开发人员来说,尤其是对于网络、安全、运维人员来说,它是最佳的编程入门语言。在安全渗透行业,大量的攻防脚本都是基于Python编写,已经成为黑客第一语言;在运维开发领域,Python也是自动化运维的第一语言,很多知名的运维工具都是基于Python语言来编写。再往后推一些,目前最前沿的大数据、数据科学、机器学习,Python也是稳固第一阵营甚至就是第一语言。

 

不管从哪个方面来考虑,我们都会选择Python。另外,Python Web框架众多,为什么选择Django,而不是Flask或者Tornado框架呢?我们这么课程的核心是带领大家快速的深入并熟悉一个Web框架,而不是深陷无穷无尽的造轮子中,在这一点上,Django有大量的应用案例和第三方插件,能够让我们做到“拿起就用”,快速产品化,这样也能让我们在学习的时候,提高信心。当我们熟悉了某一个Web框架之后,不管是继续在Python系熟悉其他框架,或者是学习PHP等其他Web技术,都不再是难题。

 

#### 课程架构

 

##### 第一季《Python编程基础》108课时

《拼客学院Web开发&安全系列课》这个系列的课程是如何来规划的?大家如何更好的学习这么课程?首先,你要先把Python语言过一遍,例如基本的数据结构(列表、元祖、字典)、流程控制语句(条件判断、循环语句)、以及函数/模块/类的使用等,这一块的内容,大家可以参考《Python编程基础课》。

##### 第二季《Django Web入门课》28课时

在掌握了Python编程基础之后,你就可以开始进入Web系列课了,例如这门《Django Web入门课》。虽然是入门课,但是为了让你更好的学习,我们精心设计了两个练手项目,分别是DjangoCMS和DjangoBlog项目。

 

在技术原理方面,在这门课里面,你将熟悉整个HTTP request到response到底做了什么处理?这里涉及的知识点包括HTTP协议、前后端语言、Web框架、数据库、操作系统等知识。

 

你将了解什么是MVC/MTV架构,控制层、业务层、数据层分布处理什么样的事务,这样设计的好处是什么?

 

另外,什么是ORM技术,为什么说Django ORM非常的好用,它对数据库的操作语法是什么?

 

在掌握了后台数据设计与操作之后,你将学习Django框架里面的核心业务逻辑功能-Views视图。Views函数/类是如何与后台Models交互,并且提取数据并为前端做渲染的?

 

除了Models和Views技术,你还需要掌握Templates模板语言,基于模板语言,我们可以让前端HTML代码实现动态展现,将静态网页变成动态网页。在这里,你将学习到模板继承、过滤器、模板变量等概念。

 

另外,Django还提供了功能强大的后台管理界面,能够让我们用极简的代码,用上其非常强悍的功能,帮助我们更好的管理Web网站。

 

在完成了Django各个组件的学习之后,我们开始小试牛刀,将这些知识点都利用起来,做一个属于自己的Blog/Wiki网站。

 
 

##### 第三季《Django Web项目实战》29课时

接下来,我们将带领大家手把手完成一个可以上线的项目“求职圈”,深入讲解并现场实现每一个代码功能,这是一个已经部署在腾讯云CentOS 7云服务器的项目。在这个课程中,我们将实现名企面经模块(列表页、详情页、面经评论、搜索、分页、过滤)、用户中心模块(用户登录注册注销评论)、首页、故障页等10个页面。

 

 

 

 

 

这个项目,我们将深入学习Views函数的编写,包括render/httpresponse/httpresponseredirect/redirect的不同功能;models数据库模型的设计与实现,如果更好的图形化管理Mysql,我们将学习到Navicat的使用;为了让大家更好的理解Web服务器的架设和部署,我们学习了基本的LNMP架构。

 
 

 

无论如何,我们必须实战,学到的,就必须能够用上。所以,为了让大家学完之后,能够马上上线部署自己的项目,我们采用与线上环境一模一样的环境进行部署,教大家采用LNMP进行部署(Linux/CentOS 7、Nginx/uWSGI、MySQL、Python/Django)。我们还将学习到如何购买腾讯云服务器,开发环境和上线环境有哪些区别和注意点,例如安全组的初始设置,如何将本地开发环境的代码和数据库远程上次到服务器。

 

 

 

>  by 陈鑫杰 20170511  写于深度闭关研发两周后