首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

理解python web开发,轻松搭建web app!

大家好,今天分享给大家的是理解python web开发,轻松搭建web app,希望大家学有所获!

因为 python代码的优雅美观且易于维护这一特点,越来越多的人选择使用 Python做web开发。而 Python的 Web框架百花齐放,目前比较流行的框架有大包大揽的 Django,小巧灵活的 Flask、 Bottle,还有性能高效的异步框架 Tornado、 sanic。这么多框架只要选择一个,阅读他的文档,就可以很轻松的搭建一个 web app,完全不需要去管他实现的原理。

本篇文章意在对一个web开发做一个梳理。

我们打开浏览器输入一个网址 yukunweb.com,然后就看到了浏览器给我们显示的页面,这个时候打开浏览器开发者工具,点击 Network,刷新页面,会看到下方的请求的 url,点击 Response,就可以看到服务器返回给浏览器的 html文件信息了。如果复制 Response响应的内容,保存为 index.html并且在浏览器打开,依然可以看到首页的内容,但是似乎缺少了一些页面的样式和功能。

这是因为当浏览器接收到首页的 HTML源码后,它会根据 HTML的规则去显示页面,然后再根据 HTML里的链接,自动发送HTTP请求给服务器,拿到相应的图片,和 Java、 CSS等资源,最终显示出一个完整的页面。所以我们会在 Network下面能看到很多额外的以 .js, .css等后缀的请求了。

其实我们看到的页面就是浏览器按照 HTML的规则,展示给我们的。 HTML告诉浏览器那里是导航,那里是主栏,那里是侧栏。而这些信息如何显示,或者是显示的样式,就是 CSS文件的功劳。至于比如导航的下拉隐藏上拉显示就是 Java的作用。

如果想要做Web开发,就一定得熟悉 HTML、 CSS、 Java三剑客的知识,这里推荐W3school的前端教程,也是我学习前端的地方:W3school

客户端和服务器通信

理解了前段三剑客,就知道如何去写一个网页。那么从我们在浏览器的地址栏输入 URL,到 Web页面呈现出来到底经历了什么。

一般这种通过发送请求获取服务器资源的Web浏览器,都可以称为客户端(client)。首先发送一个请求(request)给服务器,大多是以GET请求方式访问,服务器接收到你的请求,然后取到请求的资源,返回给客户端。

服务器和客户端之间交流是怎么进行的呢,服务器是怎么理解客户端的请求的呢。这里就需要一种协议规范,就是HTTP(HyperText Transfer Protocol,超文本传输协议)。可以说, Web是建立在 HTTP协议上通信的。

仍然是之前的例子,打开浏览器访问 yukunweb.com,打开浏览器开发者工具,点击图中标记的选项卡(记得点view parsed),可以看到客户端发给服务器的请求头前两行。

GET / HTTP/1.1Host: www.yukunweb.com

第一行开头的GET表示请求访问服务器的类型,称为方法(method)。随后的字符 /指明了请求访问的资源对象,即请求URI。最后的 HTTP/1.1,即HTTP的版本号,用来提示客户端使用的 HTTP协议功能。

综上所述,第一行请求内容的意思是:请求访问某台 HTTP服务器上的 /(首页)页面资源。所以第二行的 Host表示请求的域名也就是服务器所在地址。

如果是 POST请求的话,不仅会有请求头部信息,还有一个 Form Data的请求实体内容。

接收到请求的服务器呢,他会将请求内容的处理结果以响应的形式返回,看图中的第一行:

开头的部分仍然是服务器对应的 HTTP版本,紧接着的 200 OK表示请求的处理结果的状态码 (status code) 和原因短语。 200状态码就表示响应成功,常见的 404表示访问错误, 500表示服务器响应错误。这里的 OK是没有固定的规则的,你也可以让他返回 GOOD啥的。

下一行是服务器信息,本站用的是 Nginx服务器,在下一行显示了创建响应的日期时间。在下一行的 Content-Type表示内容的类型,客户端会依赖他判断响应的内容是网页还是音频,图片等类型。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180702A0ATVY00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券