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

文章目录

  • 1 构建web应用的基础知识
    • 1.1 互联网相关的概念
    • 1.2 互联网协议
      • DNS(域名系统)
      • IP协议(互联网络协议)
      • TCP(传输控制协议)
      • HTTP(超文本传输协议)
      • SSL(安全套接字层)
      • TLS(传输层安全)
    • 1.3 URL
  • 2 web程序
    • 2.1 web程序的本质
    • 2.2 web框架的设计模式
      • 1.2.1 经典的MVC设计模式
      • 1.2.2 Django的MTV设计模式


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/73519.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【智能体】从一个聊天工作流了解LangGraph

1. 前言 这篇文章将从如何搭建一个带网络搜索功能的聊天机器人工作流,带你初步了解 LangGraph。 2. 前提条件 已搭建 Python 开发环境,使用 3.11 以上版本。 已熟悉 Python 基础语法。可参考:【LLM】Python 基础语法_llm python入门-CSDN博…

JAVA开发:实例成员与静态成员

判断Java中的实例成员与静态成员 在Java中,可以通过以下几种方式判断一个成员是实例成员还是静态成员: 1. 通过声明方式判断 静态成员使用static关键字修饰,实例成员不使用: public class MyClass {// 实例成员int instanceVa…

Softmax 回归 + 损失函数 + 图片分类数据集

Softmax 回归 softmax 回归是机器学习另外一个非常经典且重要的模型,是一个分类问题。 下面先解释一下分类和回归的区别: 简单来说,分类问题从回归的单输出变成了多输出,输出的个数等于类别的个数。 实际上,对于分…

MySQL-存储过程

介绍 基本语法 创建 调用 查看 删除 变量 系统变量 查看 设置 用户定义变量 赋值 使用 局部变量 声明 赋值 流程控制 参数 条件结构 IF case 循环结构 while repeat loop 游标 条件处理程序 介绍 举个简单的例子,我们先select某数据&…

使用 Go 和 Gin 实现高可用负载均衡代理服务器

前言 在现代分布式系统中,负载均衡是保障服务高可用性和性能的核心技术。本文将基于 Go 语言和 Gin 框架实现一个支持动态路由、健康检查、会话保持等特性的企业级负载均衡代理服务器,并提供完整的压力测试方案和优化建议。 通过本方案实现的负载均衡代理具备以下优势: 单…

在 Linux(Ubuntu / CentOS 7)上快速搭建我的世界 MineCraft 服务器,并实现远程联机,详细教程

Linux 部署 MineCraft 服务器 详细教程(丐版,无需云服务器) 一、虚拟机 Ubuntu 部署二、下载 Minecraft 服务端三、安装 JRE 21四、安装 MCS manager 面板五、搭建服务器六、本地测试连接七、下载樱花,实现内网穿透,邀…

批量取消 PDF 文档中的所有超链接

在 PDF 文档中我们可以插入各种各样的文本也可以给文本设置字体,颜色等多种样式,同时还可以给文字或者图片添加上超链接,当我们点击超链接之后,就会跳转到对应的网页。有时候这会对我们的阅读或者使用形成一定的干扰,今…

Ubuntu xinference部署本地模型bge-large-zh-v1.5、bge-reranker-v2-m3

bge-large-zh-v1.5 下载模型到指定路径: modelscope download --model BAAI/bge-large-zh-v1.5 --local_dir ./bge-large-zh-v1.5自定义 embedding 模型,custom-bge-large-zh-v1.5.json: {"model_name": "custom-bge-large…

Vue的实例

Every Vue application starts with a single Vue component instance as the application root. Any other Vue component created in the same application needs to be nested inside this root component. 每个 Vue 应用都以一个 Vue 组件实例作为应用的根开始。在同一个应…

Linux学习笔记(应用篇三)

基于I.MX6ULL-MINI开发板 LED学习GPIO应用编程输入设备 开发板中所有的设备(对象)都会在/sys/devices 体现出来,是 sysfs 文件系统中最重要的目录结构 /sys下的子目录说明/sys/devices这是系统中所有设备存放的目录,也就是系统中…

【图论】网络流算法入门

(决定狠狠加训图论了,从一直想学但没启动的网络流算法开始。) 网络流问题 • 问题定义:在带权有向图 G ( V , E ) G(V, E) G(V,E) 中,每条边 e ( u , v ) e(u, v) e(u,v) 有容量 c ( u , v ) c(u, v) c(u,v)&am…

递归、搜索与回溯第四讲:floodfill算法

递归、搜索与回溯第四讲:floodfill算法 1.Floodfill算法介绍2.图像渲染3.岛屿数量4.岛屿的最大面积5.被围绕的区域6.太平洋大西洋水流问题7.扫雷游戏8.衣橱整理 1.Floodfill算法介绍 2.图像渲染 3.岛屿数量 4.岛屿的最大面积 5.被围绕的区域 6.太平洋大西洋水流问题…

【深度学习与实战】2.3、线性回归模型与梯度下降法先导案例--最小二乘法(向量形式求解)

为了求解损失函数 对 的导数,并利用最小二乘法向量形式求解 的值‌ 这是‌线性回归‌的平方误差损失函数,目标是最小化预测值 与真实值 之间的差距。 ‌损失函数‌: 考虑多个样本的情况,损失函数为所有样本的平方误差之和&a…

气象可视化卫星云图的方式:方法与架构详解

气象卫星云图是气象预报和气候研究的重要数据来源。通过可视化技术,我们可以将卫星云图数据转化为直观的图像或动画,帮助用户更好地理解气象变化。本文将详细介绍卫星云图可视化的方法、架构和代码实现。 一、卫星云图可视化方法 1. 数据获取与预处理 卫星云图数据通常来源…

浏览器渲染原理与优化详解

一、浏览器渲染基础原理 浏览器渲染流程主要包括以下步骤(也称为"关键渲染路径"): 构建DOM树:将HTML解析为DOM(文档对象模型)树构建CSSOM树:将CSS解析为CSSOM(CSS对象模…

基于Spring Boot的成绩管理系统后台实现

下面是一个完整的成绩管理系统后台实现,使用Spring Boot框架,包含学生管理、课程管理和成绩管理功能。 1. 项目结构 src/main/java/com/example/grademanagement/ ├── config/ # 配置类 ├── controller/ # 控制器 ├── dto/ …

实现极限网关(INFINI Gateway)配置动态加载

还在停机更新 Gateway 配置,OUT 了。 今天和大家分享一个 Gateway 的功能:动态加载配置(也称热更新或热加载)。 这个功能可以在 Gateway 不停机的情况下更新配置并使之生效。 配置样例如下: path.data: data path.…

Mean Shift 图像分割与 Canny 边缘检测教程

1. Mean Shift 简介 Mean Shift 是一种聚类算法,通过寻找图像中颜色相似的区域来实现分割。它非常适合用于场景分割或物体检测等任务。本教程将它与 Canny 边缘检测结合,突出分割区域的边界。 2. 图像分割流程 我们将按照以下步骤完成图像分割和边缘检…

Day15 -实例 端口扫描工具 WAF识别工具的使用

一、端口扫描工具 1、zenmap 我这里user是汉字名,没有解析成功。等后续换一个英文账户试一试。 魔改kali的nmap nmap -p8000-9000 8.140.159.19 2、masscan cmd启动,拖入exe文件。然后先写ip,会报错给提示 寻路犬系统 我们去找一下他的…

如何解决高并发场景下的性能瓶颈?实践分享

解决高并发性能瓶颈的核心方法包括优化系统架构、合理使用缓存技术、数据库优化及扩展策略、负载均衡设计。 其中,优化系统架构是根本解决性能问题的关键所在。良好的系统架构能够有效支撑业务高效稳定运行,避免性能瓶颈带来的损失。企业可通过微服务架构…