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

文章目录


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层收到后,把数据填到模板中,组织为响应格式发给浏览器。

相关推荐
鹏码纵横1 小时前
已解决:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 异常的正确解决方法,亲测有效!!!
java·python·mysql
仙人掌_lz1 小时前
Qwen-3 微调实战:用 Python 和 Unsloth 打造专属 AI 模型
人工智能·python·ai·lora·llm·微调·qwen3
weixin_985432111 小时前
Spring Boot 中的 @ConditionalOnBean 注解详解
java·spring boot·后端
猎人everest2 小时前
快速搭建运行Django第一个应用—投票
后端·python·django
猎人everest2 小时前
Django的HelloWorld程序
开发语言·python·django
chusheng18403 小时前
2025最新版!Windows Python3 超详细安装图文教程(支持 Python3 全版本)
windows·python·python3下载·python 安装教程·python3 安装教程
别勉.3 小时前
Python Day50
开发语言·python
xiaohanbao093 小时前
day54 python对抗生成网络
网络·python·深度学习·学习
爬虫程序猿3 小时前
利用 Python 爬虫按关键字搜索 1688 商品
开发语言·爬虫·python
英杰.王4 小时前
深入 Java 泛型:基础应用与实战技巧
java·windows·python