党员学习笔记

核心提示大家好我是小张,我们今天学习的是Python的web开发基础。由于Python是一种解释性的脚本语言,诞生日期早于WEB互联网的日期,并且Python的开发效率高,所以Python是非常适合做web开发的。写本篇文章主要是为了加深知识的巩固

大家好,我是小张。今天我们学习Python的web开发基础。由于Python是一种解释性脚本语言,其诞生日期早于互联网,开发效率高,因此Python非常适合WEB开发。写这篇文章主要是为了加深知识的巩固,方便后续的复习。

首先要明白web开发的架构是BS架构,即浏览器/服务器架构,简称B/S架构。在B/S架构下,客户端只需通过浏览器就可以访问服务器提供的应用服务,对客户端的配置要求较少。通常,不需要安装额外的客户端程序。

-

网络基础

Web应用中,服务器将网页发送给浏览器,浏览器实际上是将网页的HTML代码发送给浏览器,让浏览器显示。浏览器和服务器之间的传输协议是HTTP协议。HTML是一种用来定义网页的文本,HTTP是一种在网络上传输HTML的协议。

当我们访问一个网站时,比如访问我们在地址栏输入的地址,在www.baidu.com按回车键,客户端浏览器会向我们的服务器发送访问请求,我们的服务器响应后会将主页的HTML源代码发送给客户端浏览器。浏览器收到HTML源代码后,会把源代码编译成我们能理解的页面布局格式。

我们可以通过使用浏览器自带的开发工具来查看这个网站的源代码。元素显示了网页的结构,网络显示了浏览器和服务器之间的通信。让我们点击网络,确保第一个小红灯亮起,Chrome将记录浏览器和服务器之间的所有通信:

当我们在地址栏输入www.baidu.com时,浏览器会显示主页。浏览器在这个过程中做了什么?通过网络的记录,我们可以知道。在网络中,导航至第一条记录,并在右侧找到请求标题:

点击右边的view source,我们可以看到浏览器发送给服务器的请求。前两行分析如下:

第一行:GET/HTTP/1.1

GET表示从服务器获取网页数据的读请求,/表示URL的路径,总是以/开头,/表示主页。HTTP/1.1表示采用的HTTP协议版本为1.1。目前HTTP协议的版本是1.1,但是大部分服务器也支持1.0版本。主要区别在于1.1版允许多个HTTP请求重用一个TCP连接来加快传输速度。

来自二线:主持人:www.baidu.com

指示浏览器从域名www.baidu.com发送请求。

让我们继续查找响应头,并单击view source显示服务器返回的原始响应数据:

HTTP响应分为两部分:头和体。我们在网络中看到的最重要的标题行如下:

200好吧

00表示响应成功,随后是OK。失败的响应是404找不到:网页不存在,500内部服务器错误:服务器出现内部错误,等等。

内容类型:文本/html

Content-Type表示响应的内容。这里的text/HTML是指HTML网页。浏览器根据内容类型来判断响应的内容是网页还是图片、视频还是音乐。

HTTP响应的主体是HTML源代码。我们可以直接在浏览器中查看HTML源代码:

httpqueryinfo

追踪首页,我们来总结一下HTTP请求的流程:

第一步:浏览器首先向服务器发送一个HTTP请求。该请求包括:

方法:GET或POST,GET只请求资源,POST会附带用户数据;

路径:/full/URL/path;

域名:由主机标题指定:主机:www.baidu.com

和其他相关标题;;

如果是POST,那么请求还包括一个包含用户数据的主体。

步骤2:服务器向浏览器返回HTTP响应,包括:

响应代码:200表示成功,3xx表示重定向,4xx表示客户端发送的请求有错误,5xx表示服务器处理有错误;

响应类型:由Content-Type指定,例如:Content-Type:text/html;Charset=utf-8表示响应类型是HTML文本,编码是utf-8。Content-Type: image/jpeg表示响应类型为jpeg格式图片;

和其他相关标题;;

通常服务器的HTTP响应会携带内容,即有一个包含响应内容的正文,正文中有网页的HTML源代码。

第三步:如果浏览器还需要继续向服务器请求其他资源,比如图片,再次发出HTTP请求,重复第一步和第二步。

HTTP协议采用了非常简单的请求-响应模式,大大简化了开发。当我们写页面的时候,只需要把HTTP响应中的HTML发出去,而不用考虑如何附加图片、视频等。如果浏览器需要请求图片和视频,它会发送另一个HTTP请求。因此,一个HTTP请求只处理一个资源。

HTTP协议同时具备极强的扩展性,虽然浏览器请求的是http://www.baidu.com的首页,但是在HTML中可以链入其他服务器的资源,比如,从而将请求压力分散到各个服务器上,并且,一个站点可以链接到其他站点,无数个站点互相链接起来,就形成了World Wide Web,简称WWW。同时,HTTP协议具有很强的扩展性。虽然浏览器请求的是http://www.baidu.com的主页,但它可以链接其他服务器的资源,比如用HTML,从而将请求压力分散到所有服务器。而且,一个站点可以链接到其他站点,无数个站点相互链接,就这样形成了万维网(WWW)。

HTTP格式

每个HTTP请求和响应都遵循相同的格式。一个HTTP包含两部分:头和主体,主体是可选的。

HTTP是文本协议,所以格式也很简单。http请求的格式:

获取/路径HTTP/1.1

标题1:值1

标题2:值2

标题3:值3

每个标题行一个,换行符是。

http请求的格式:

发布/路径HTTP/1.1

标题1:值1

标题2:值2

标题3:值3

身体数据...

当遇到两个连续的 r ns数据时,标题部分结束,所有后续数据为正文。

HTTP响应的格式:

200好吧

标题1:值1

标题2:值2

标题3:值3

身体数据...

如果HTTP响应包含body,它也由 r n r n分隔,请再次注意,Body的数据类型由Content-Type标头决定。如果是网页,Body就是文本,如果是图片,Body就是图片的二进制数据。

当有内容编码时,主体数据被压缩,最常见的压缩方法是gzip。所以,当你看到Content-Encoding: gzip的时候,你需要对正文数据进行解压缩,才能得到真正的数据。压缩的目的是减小主体的尺寸,加快网络传输速度。

今天的学习到此为止。web基础作为Python web开发最基础的理论知识,往往也是最难理解的部分之一。在学习Python的路上,我们还有很多路要走!

 
友情链接
鄂ICP备19019357号-22