Web极简开发
各位朋友,大家好!
嗯,今天的开场白怎么不一样了?
哈哈,是啊!要知道这个可是我们的又年轻又帅又有才的Python导师刘之昂老师的口头禅哦。
这里借来用一下,是因为我们今天要送给大家的彩蛋正是刘之昂老师在高渡网(https://www.igaodu.cn)发布的新的视频课程《Python Web开发》要讲的内容哦,我们这里先打开一个门缝,让大家往里边瞧瞧吧。因为很多人一看到“Python Web开发”这么高大上的东西,就开始有畏难的学习情绪了。
但是,真的是那么难吗?真的有必要学吗?
这样说吧,当我们巴心巴肝的学完了Python的基础知识,咱好歹也算是一名Python程序员了,可是我们应该去哪里施展我们的拳脚呢?实话实说,学习Python技术,用武之地可多了,Web开发算一种,其他的还有数据挖掘、数据分析、机器学习、人工智能,几乎你能想到的软件能做的事,Python都能行!
为什么要从Web开发学起呢?这个还真不一定啊。不过呢,作为初学者,Web开发的确是一个非常好的技术路径的入口,毕竟这是一个网络的时代,Web应用极其普遍,小到网站,大到平台,都被称为Web开发。Web不止是一个网站,Web技术正是一切网络应用技术的基础和入口。很难想象,在今天我们还会创建一个独立于网络之外的应用,这就是我们为什么一定要学习Web应用技术的原因。
当然,完整的Web开发技术,绝不是一堂课能学会的,有兴趣的同学赶紧上高渡网站,查找《Python Web开发》,就能找到刘之昂老师完整的视频课程了。
今天我们仅就Web开发的核心理念,来做一些有意义的探索。通过一个极简的案例,来一窥Python Web应用的奇迹,从而为大家打开一扇通往Web应用的大门。
那我们就废话少说,大家一起来看看我们的第一个WEB应用吧。
1、Web技术的本质
最简单的Web应用就是先把HTML用文件保存好,用一个现成的HTTP服务器软件,接收用户请求,然后从文件中读取HTML文档信息,返回给浏览器。一些常见的静态服务器就是这样干的。
如果要动态生成HTML,就需要把上述步骤自己来实现。不过,接受HTTP请求、解析HTTP请求、发送HTTP响应等等,都不是一件轻松的事情。如果让我们自己来写这些底层代码,光是阅读HTTP规范,没有1-2个月时间不定能搞清楚,所以,这肯定不是一个正确的方向。
正确的做法是底层代码交由专门的服务器软件实现,我们用Python写代码,主要是专注于生成HTML文档。因为我们不希望接触到TCP连接、HTTP原始请求和响应格式,所以,需要一个统一的接口(WSGI接口),让我们专心用Python编写Web的业务逻辑。
2、Hello, web
我们来看看python是如何搭建一个极简的Web网站的。
WSGI 接口定义非常简单,它只要求Web开发者实现一个函数,就可以响应HTTP请求。
上面的application()函数就是符合WSGI标准的一个HTTP处理函数,它接收两个参数:
environ:一个包含所有HTTP请求信息的dict对象;
start_response:一个是发送HTTP响应的函数。
在application()函数中,调用:start_response()函数,就发送了HTTP响应的Header头部标签。因为Header只能发送一次,所以,start_response()函数也只能调用一次。
start_response()函数接收两个参数,一个是http响应码,一个是一组 list 表示的http Header,每个Header用一个包含两个字符串(str)的元组(tuple)表示。
通常情况下,都应该把Content-Type头发送给浏览器。其他很多常用的HTTP Header也应该发送。
然后,函数的返回值'<h1>Hello, 小明!</h1>'将作为HTTP响应的Body发送给浏览器。
这是一个服务器启动程序。Python内置了一个WSGI服务器,启动它需要导入模块wsgiref,它是用纯Python编写的WSGI服务器的参考实现。所谓“参考实现”是指该实现完全符合WSGI标准,但是不考虑任何运行效率,仅供开发和测试使用。
上图:我们在Python里运行server.py,
启动了服务器,
并连通了服务器的8000端口。
然后,我们就可以打开浏览器,
在地址栏输入:localhost:8000,
就能访问网站了。
如下图所示。
小结
真正的商业Web应用要远比这个演示程序复杂很多,有兴趣的同学请访问高渡网站,就能找到刘之昂老师的Python Web开发课程了。
那么,到此为止,我们的Python入门课程就真的全部分享完了。
尚未尽兴的同学,请继续关注我们,接下来我们还会不定期推出一些非常有价值又易于学习的课程或内容,分享给大家。
有任何问题或指正,欢迎给我们留言,方便我们改进和为大家提供更好的服务。
谢谢你们!