服务器端网站编程(Django)

服务器端网站编程
Web浏览器使用超文本传输​​协议(HTTP)与Web服务器进行通信。当您单击网页上的链接,提交表单或运行搜索时,HTTP请求将从浏览器发送到目标服务器。

该请求包括标识受影响资源的URL,定义所需动作(例如获取,删除或发布资源)的方法,并且可能包括以URL参数编码的其他信息(通过查询发送的字段/值对)字符串),POST数据(通过HTTP POST方法发送的数据)或关联的Cookie中。

Web服务器等待客户端请求消息,在到达它们时对其进行处理,然后使用HTTP响应消息答复Web浏览器。响应中包含一个状态行,指示请求是否成功(例如,“ HTTP / 1.1 200 OK”表示成功)。

成功响应请求的正文将包含所请求的资源(例如新的HTML页面或图像等),然后可以由网络显示 浏览器。
静态网站
下图显示了静态站点的基本Web服务器体系结构(静态站点是一种在请求特定资源时从服务器返回相同硬编码内容的站点)。当用户想要导航到页面时,浏览器会发送HTTP“ GET”请求并指定其URL。

服务器从其文件系统中检索请求的文档,并返回包含该文档和成功状态的HTTP响应(通常为200 OK)。如果由于某种原因而无法检索文件,则返回错误状态(请参阅客户端错误响应和服务器错误响应)。
静态站点基本Web服务器体系结构在这里插入图片描述动态网站
动态网站是仅在需要时才动态生成某些响应内容的网站。在动态网站上,通常通过将数据库中的数据插入HTML模板中的占位符来创建HTML页面(与使用静态网站相比,这是一种存储大量内容的更有效的方法)。

动态站点可以基于用户提供的信息或存储的首选项返回URL的不同数据,并可以执行其他操作作为返回响应(例如发送通知)的一部分。

支持动态网站的大多数代码必须在服务器上运行。创建此代码称为“服务器端编程”(有时也称为“后端脚本”)。

下图显示了动态网站的简单架构。如上图所示,浏览器将HTTP请求发送到服务器,然后服务器处理请求并返回适当的HTTP响应。

对静态资源的请求的处理方式与对静态资源的处理方式相同 网站(静态资源是任何不会更改的文件-通常是CSS,JavaScript,图像,预创建的PDF文件等)。动态网站简单架构在这里插入图片描述
相反,对动态资源的请求被转发(2)到服务器端代码(在该图中显示为Web应用程序)。对于“动态请求”,服务器将解释请求,从数据库中读取所需信息(3),将检索到的数据与HTML模板结合起来(4),然后发送回包含生成的HTML的响应(5,6)。

服务器端和客户端编程是否相同?
现在,让我们将注意力转向服务器端和客户端编程中涉及的代码。在每种情况下,代码都明显不同:

  1. 他们有不同的目的和关注点。
  2. 它们通常不使用相同的编程语言(JavaScript是例外,可以在服务器端和客户端使用)。
  3. 它们在不同的操作系统环境中运行。

在浏览器中运行的代码被称为客户端代码,主要与改善呈现的网页的外观和行为有关。这包括选择和样式化UI组件,创建布局,导航,表单验证等。相比之下,服务器端网站编程主要涉及选择响应于请求将哪些内容返回给浏览器。服务器端代码处理诸如验证提交的数据和请求,使用数据库存储和检索数据以及根据需要将正确的数据发送到客户端之类的任务。

客户端代码是使用HTML,CSS和JavaScript编写的-它在网络浏览器中运行,对底层操作系统的访问很少或没有(包括对文件系统的有限访问)。

Web开发人员无法控制每个用户可能使用哪种浏览器来浏览网站-浏览器与客户端代码功能的兼容级别不一致,并且客户端编程的部分挑战是如何妥善处理浏览器支持方面的差异。

服务器端代码可以用多种编程语言编写-流行的服务器端Web语言的示例包括PHP,Python,Ruby,C#和NodeJS(JavaScript)。服务器端代码具有对服务器操作系统的完全访问权限,开发人员可以选择他们希望使用的编程语言(和特定版本)。

开发人员通常使用Web框架编写代码。 Web框架是功能,对象,规则和其他旨在解决常见问题的代码构造的集合 问题,加速开发并简化特定域中面临的不同类型的任务。

同样,尽管客户端和服务器端代码都使用框架,但是域却非常不同,因此框架也是如此。 客户端Web框架简化了布局和演示任务,而服务器端Web框架则提供了许多“通用” Web服务器功能,您可能必须自己实现这些功能(例如,对会话的支持,对用户和身份验证的支持,轻松的数据库访问, 模板库等)。
您可以在服务器端做什么?
服务器端编程非常有用,因为它允许我们有效地交付针对单个用户量身定制的信息,从而创造更好的用户体验。

像亚马逊这样的公司使用服务器端编程来构造产品的搜索结果,根据客户的偏好和以前的购买习惯提出有针对性的产品建议,简化购买等。

银行使用服务器端编程来存储帐户信息,并仅允许授权用户查看和进行交易。其他服务,例如Facebook,Twitter,Instagram和Wikipedia,都使用服务器端编程来突出显示,共享和控制对有趣内容的访问。

下面列出了服务器端编程的一些常见用法和优点。您会注意到有一些重叠!
高效的信息存储和传递
想象一下在亚马逊上有多少种产品,想象在Facebook上有多少篇文章?为每个产品或帖子创建一个单独的静态页面是完全不切实际的。

服务器端编程使我们可以将信息存储在数据库中,并动态构建和返回HTML和其他类型的文件(例如PDF,图像等)。也可以简单地返回数据(JSON,XML等)以通过适当的客户端Web框架进行渲染(这减轻了服务器的处理负担以及需要发送的数据量)。

服务器不仅限于从数据库发送信息,还可以选择返回软件工具的结果或来自通信服务的数据。内容甚至可以针对正在接收内容的客户端设备的类型。

由于信息位于数据库中,因此也可以更轻松地与其他业务共享和更新信息 系统(例如,在线上或在商店中销售产品时,商店可能会更新其库存数据库)。

注意:您无需费心去查看服务器端代码对信息的有效存储和传递的好处:

 1. 转到亚马逊或其他电子商务网站。
 2. 搜索许多关键字,并注意即使结果有所改变,页面结构也不会改变。
 3. 打开两个或三个不同的产品。再次注意它们具有相同的结构和布局,但是不同产品的内容已从数据库中提取。

对于常见的搜索词(例如``鱼''),您可以看到数百万个返回值。使用数据库可以有效地存储和共享这些信息,并且可以仅在一处控制信息的表示。

定制的用户体验
服务器可以存储和使用有关客户端的信息,以提供方便且量身定制的用户体验。例如,许多站点都存储信用卡,因此不必再次输入详细信息。 Google Maps等网站可以使用保存的位置或当前位置来提供路线信息,并使用搜索或旅行历史记录在搜索结果中突出显示本地商家。

可以对用户习惯进行更深入的分析,以预测用户的兴趣并进一步自定义响应和通知,例如提供您可能希望在地图上查看的先前访问或受欢迎位置的列表。

注意:Google地图会保存您的搜索和访问历史记录。经常访问或经常搜索的位置比其他位置突出显示。

Google搜索结果会根据之前的搜索进行优化。

 - 转到Google搜索
 - 搜索“足球”。
 - 现在尝试在搜索框中键入“收藏夹”,并观察自动完成搜索的预测。
   巧合?是吧!

受控访问内容
服务器端编程允许站点限制对授权用户的访问,并且仅提供允许用户查看的信息。
真实的例子包括:

  • Facebook等社交网络允许用户完全控制自己的数据,但只允许其朋友查看或评论该数据。用户确定谁可以看到他们的数据,并确定哪些人可以看到他们的数据出现在其供稿中-授权是用户体验的核心部分!
  • 您现在所在的网站可以控制对内容的访问:所有人都可以看到文章,但是只有登录的用户才能编辑它们。要尝试此操作,请单击此页面顶部的“编辑”按钮-如果登录,将显示编辑视图;如果您尚未登录,将被带到注册页面。

注意:考虑其他实际示例,其中可以控制对内容的访问。例如,如果您访问银行的在线站点,会看到什么?登录到您的帐户-您还能查看和修改哪些其他信息?您能看到什么信息,只有银行可以兑换?

存储会话/状态信息
服务器端编程允许开发人员利用会话,这基本上是一种机制,它允许服务器将信息存储在站点的当前用户上,并根据该信息发送不同的响应。

例如,这使站点可以知道用户先前已登录并显示其电子邮件或订购历史记录的链接,或者可以保存简单游戏的状态,以便用户可以再次访问站点并继续进行操作他们离开了。

注意:请访问具有订阅模式的报纸网站,然后打开一堆标签(例如,年龄)。持续几个小时/天,继续访问该网站。最终,您将开始被重定向到说明如何订阅的页面,并且您将无法访问文章。此信息是存储在cookie中的会话信息的示例。

通知与交流
服务器可以通过网站本身或通过电子邮件,SMS,即时消息,视频对话或其他通信服务发送常规或特定于用户的通知。

一些示例包括:

  • Facebook和Twitter发送电子邮件和SMS消息以通知您新的通信。
  • 亚马逊会定期发送产品电子邮件,提示您与您可能感兴趣的已购买或浏览过的产品相似的产品。
  • Web服务器可能会向站点管理员发送警告消息,以将其警告给服务器上的内存不足或可疑的用户活动。

注意:最常见的通知类型是“注册确认”。选择几乎所有您感兴趣的大型网站(Google,Amazon,Instagram等),然后使用您的电子邮件地址创建一个新帐户。您将很快收到一封确认注册的电子邮件,或要求确认激活您的帐户。

数据分析
一个网站可能会收集有关用户的大量数据:他们搜索什么,他们购买什么,他们推荐什么,他们在每个页面停留多长时间。服务器端编程可用于基于对该数据的分析来完善响应。

例如,亚马逊和谷歌都基于先前的搜索(和购买)来宣传产品。

注意:如果您是Facebook用户,请转到主供稿并查看帖子流。请注意,有些帖子是不按数字顺序排列的-特别是,具有更多“喜欢”的帖子在列表中通常比最近的帖子要多。

另外,请查看正在展示的广告类型-您可能会看到有关您在其他网站上浏览过的内容的广告。 Facebook突出显示内容和广告的算法可能有点神秘,但很明显,它的确取决于您的喜好和观看习惯!

总结
恭喜,您已经到达第一篇有关服务器端编程的文章的结尾。

您现在已经了解到服务器端代码是在Web服务器上运行的,其主要作用是控制向用户发送的信息(而客户端代码主要处理向用户发送数据的结构和表示) 。

您还应该了解它的用处,因为它使我们能够创建网站,以高效地提供针对单个用户量身定制的信息,并对使用服务器端程序员时可以执行的某些操作有所了解。

最后,您应该了解服务器端代码可以用多种编程语言编写,并且应该使用Web框架来简化整个过程。

在以后的文章中,我们将帮助您为第一个站点选择最佳的Web框架。在这里,我们将带您详细了解主要的客户端-服务器交互。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值