【django】1-1 django构建web程序的基础知识

发布于:2025-03-27 ⋅ 阅读:(22) ⋅ 点赞:(0)


1 构建web应用的基础知识

1.1 互联网相关的概念

互联网:互联网是连接大量计算机的全球性的网络。这些计算机通过一系列标准协议进行数据交流。
协议:互联网上的设备之间进行信息交换的标准。
服务器:服务器是存储和管理数据,为其他计算机提供服务的计算机。
客户端:客户端是请求和接收服务器的数据的设备。
IP地址:接入互联网的每台设备都有自己的唯一IP地址,有两种格式:IPv4和IPv6。
域名:互联网上某台计算机或计算机组的名称,可读性高,便于记忆。
数据包:数据包是在网络中传输的信息的一小部分。由数据和数据头组成,数据头用来告知接收该数据包的机器如何处理数据包。

1.2 互联网协议

DNS(域名系统)

DNS类似互联网上的电话簿,用来进行域名和IP的转换。

互联网中提供DNS查询的计算机称为DNS服务器。客户端访问域名时,先向DNS服务器查询域名对应的IP地址,然后再向IP地址发送请求。

IP协议(互联网络协议)

IP协议是互联网的地址系统。IP协议把信息分割为一个个数据包,并在其中标记源设备和目标设备的IP地址,这样网络中的设备接收到数据包就知道要往哪里进行转发。

IPv4和IPv6是IP协议的不同版本。
IPv4地址的格式是四组由点分隔的数字,如“192.168.0.2”,它由32位的二进制数记录,因此IPv4可以提供约43亿个唯一的IP地址。如今互联网发展,连入的设备远远超过这个数目,因此开始使用IPv6地址。
IPv6地址由128位二进制数记录,格式是冒号分隔的一组十六进制数。

目前仍旧有很大一部分设备使用IPv4地址,由于IPv4地址的有限供应,引入了动态IP。
动态IP是从IP地址池中为客户端分配的临时IP地址。一些大企业一般会付费维护一个静态IP地址,但是大多数用户使用动态IP就足够了。

TCP(传输控制协议)

IP协议不负责数据包排序和错误检查。为了确保信息传输的可靠性,一般把IP协议和TCP协议联合起来使用。
TCP可以保持发送者和目标的连接,并确保数据顺序。

HTTP(超文本传输协议)

HTTP使用超文本链接加载网页信息,属于应用层协议。
HTTP包括客户端向服务端发送的请求,以及服务端返回的响应信息。

  • HTTP请求
    每个HTTP请求包含几种信息:HTTP版本、URL、HTTP方法、请求头、请求体。
    HTTP方法是此次请求希望服务器执行的动作。“GET”和“POST”是最常用的两个方法。
    请求头是键值对形式的文本信息,包含了客户端的浏览器类型、请求什么数据等信息。
    请求体包含了此次请求提交给服务器的信息,如用户名、密码等表单信息。

  • HTTP响应
    HTTP响应包括:HTTP状态码、响应头和可选的响应体。
    HTTP状态码是表示HTTP请求是否成功的3位数字。可以通过状态码的第一个数字判断此次请求的状况:1xx表示信息,2xx表示成功,3xx表示重定向,4xx表示客户端错误,5xx表示服务器错误。
    响应头包含响应体中数据的语言和格式等信息。
    响应体包含此次请求取到的信息。大多是HTML数据。

SSL(安全套接字层)

SSL是一种加密安全协议,是TLS协议的前身。
Web上的数据最开始是明文传输的,任何人都可以截获并读取信息。创建SSL是为了纠正这个错误并保护用户隐私。

SSL的作用
数据加密:对Web传输的数据进行加密,任何截获此数据的人只会看到乱码。
身份验证:在两个通信设备之间启用身份验证,确保两个设备是它们所声称的真实身份。
数据签名:对数据进行数字签名,确保数据的完整性和一致性。

TLS(传输层安全)

TLS是网络上使用的最新的加密协议。
由于它和SSL联系紧密,因此TLS经常被称为“SSL加密”。

HTTPS使用TLS来加密普通的HTTP请求和响应,使其更安全。
客户端与服务器建立HTTP连接需要进行多次往返。除了TCP握手外,还必须进行TLS/SSL握手以使用HTTPS。

1.3 URL

URL即统一资源定位符,表示互联网上某个资源的地址。每个资源都有一个唯一的URL,其中的信息指出了文件的位置和浏览器该怎么处理它。

URL语法格式:

protocol://hostname[:port]/path[?query][#fragment]
  • protocol:网络传输协议,常见的有http,https,file,ftp。
  • hostname,资源所在的服务器的域名、主机名或IP地址。
  • port,端口号,范围0-65535。可省略,省略时会使用各种传输协议的默认端口号。
  • path,路由地址,一般表示主机上的目录或文件地址。
  • query,查询字符串,从?开始到#结束,包含多个参数,使用&隔开。
  • fragment,信息片段,用于定位网页上的信息。

一些特殊符号无法在URL中使用,这时会用该符号的ASCII编码值。


2 web程序

2.1 web程序的本质

  1. 接收客户端的请求。
  2. 解析请求,处理数据。
  3. 构造响应返回。

2.2 web框架的设计模式

1.2.1 经典的MVC设计模式

Model:数据存储层,表的定义和数据增删改查。
View:视图层,系统的前端输出,允许用户交互。
Controller:控制层,接收用户输入并调用Model和View完成需求。

基本请求流程:

  1. 用户浏览器向服务器发起request请求,Controller接收到请求,同时向Model和View发指令;
  2. Model根据指令选取业务数据,发送给 Controller;
    View根据指令加载对应页面,发送给Controller;
  3. Controller收到二者返回的数据,组织成响应格式发给浏览器。

MVC模式的优点:降低代码耦合度,增加模块重用性。

1.2.2 Django的MTV设计模式

Model:数据存储层。
Template:模板层,处理页面显示。
View:业务逻辑层,处理业务逻辑。
MVC的V层,在这里被细分为Template和View层。

基本请求流程:

  1. 用户浏览器发起request请求,服务器收到后,通过View层分析后,同时向Model和Template发指令;
  2. Model层取数据返回给View;
  3. Template层调用对应的模板返回给View;
  4. View层收到后,把数据填到模板中,组织为响应格式发给浏览器。