Django | 一文带你了解Django的简介、安装、结构、B/S、C/S、MVC、MVT、ORM

一、Django介绍

1.1 Django简介

  DjangoPython语言中的一个web框架,Python语言中主流的web框架有Django、Tornado、Flask等多种。Django相较与其它WEB框架,其优势为:大而全,框架本身集成了ORM、模型绑定、模板引擎、缓存、Session等功能,是一个全能型框架,拥有自己的Admin数据管理后台,第三方工具齐全,性能折中。缺点:功能太多,数据分表复杂,高性能扩展复杂。

​并且Django 是开源的!!!

1.2 安装Django

pip安装:在cmd命令窗口中

pip install django

在这里插入图片描述
最好在虚拟环境中安装比较好!

1.3 参考文档

  官方文档的链接在:https://docs.djangoproject.com ,点击页面右下角的 language 按钮,可以选择 zh-hans ,显示中文,只有部分页面有中文翻译点击页面右下角的Documentation version,可以选择版本。

在这里插入图片描述

二、Django相关知识学习

2.1 Django结构

在这里插入图片描述

2.2 B/S和C/S

Django是用于开发B/S架构的软件的,软件主要分为B/S架构和C/S架构:

  • B/S:全称Browser/Server(浏览器/服务器)

  • C/S:全称Client/Server(客户端/服务器)

2.3 MVC

​ MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

  • M: 管理应用程序的状态(通常存储到数据库中),并约束改变状态的行为(或者叫做“业务规则”)。

  • V: 负责把数据格式化后呈现给用户。

  • C: 接受外部用户的操作,根据操作访问模型获取数据,并调用“视图”显示这些数据。控制器是将“模型”和“视图”隔离,并成为二者之间的联系纽带。

  • 在这里插入图片描述

2.4 MVT

​ Django也是一个MVC框架。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为 MTV模式:

  • M: 代表模型(Model),即数据存取层。 该层处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。

  • V: 代表视图(View),即业务逻辑层。 该层包含存取模型及调取恰当模板的相关逻辑。 你可以把它看作模型与模板之间的桥梁。

  • T: 代表模板(Template),即表现层。 该层处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。
    在这里插入图片描述
    在这里插入图片描述

2.5 ORM

ORM 就是通过实例对象的语法,完成关系型数据库的操作的技术,是"对象-关系映射"(Object/Relational Mapping) 的缩写。
在这里插入图片描述
ORM 把数据库映射成对象。

数据库的表(table) --> 类(class)
记录(record,行数据)--> 对象(object)
字段(field)--> 对象的属性(attribute)

举例来说,下面是一行 SQL 语句。

SELECT id, first_name, last_name, phone, birth_date, sex
FROM persons 
WHERE id = 10

程序直接运行 SQL,操作数据库的写法如下。

res = db.execSql(sql);
name = res[0]["FIRST_NAME"];

改成 ORM 的写法如下。

p = Person.get(10);
name = p.first_name;

总结:
一比较就可以发现,ORM 使用对象,封装了数据库操作,因此可以不碰 SQL 语言。开发者只使用面向对象编程,与数据对象直接交互,不用关心底层数据库。

ORM 有下面这些优点

  • 数据模型都在一个地方定义,更容易更新和维护,也利于重用代码。
  • ORM 有现成的工具,很多功能都可以自动完成,比如数据消毒、预处理、事务等等。
  • 它迫使你使用 MVC 架构,ORM 就是天然的 Model,最终使代码更清晰。
  • 基于 ORM 的业务代码比较简单,代码量少,语义性好,容易理解。
  • 你不必编写性能不佳的 SQL。

ORM 也有很突出的缺点

  • ORM 库不是轻量级工具,需要花很多精力学习和设置。
  • 对于复杂的查询,ORM 要么是无法表达,要么是性能不如原生的 SQL。
  • ORM 抽象掉了数据库层,开发者无法了解底层的数据库操作,也无法定制一些特殊的 SQL。
<think>好的,我现在需要帮助用户查找B/S三层架构的示意图,并根据提供的引用内容来构建回答。首先,用户的问题是关于B/S三层架构的图解,我需要先理解B/S架构的三层结构是什么,然后结合现有的引用资料来组织答案。 首先,回顾用户提供的引用内容。引用[2]提到B/S架构分为客户机和服务器两层,其中客户端处理界面显示和业务逻辑,服务器处理数据存储。但用户问的是三层架构,可能需要进一步细分。引用[4]讨论了MVC模式,其中模型(Model)处理业务规则,可能对应业务逻辑层。引用[5]提到Servlet容器和Web服务器的交互,可能涉及表示层和业务逻辑层的分离。 根据常见的B/S三层架构,通常分为表示层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。但根据引用[2],用户提供的资料中可能将B/S架构分为用户表示层和数据库层,而业务逻辑放在客户端。这可能与标准的三层架构有所不同,需要确认。 用户引用的资料可能存在差异,因此需要结合多个引用进行分析。例如,引用[2]提到客户端处理事务逻辑,而服务端处理数据存储,这可能对应两层架构,但用户需要的是三层。此时可能需要调整结构,将业务逻辑层单独分离出来,形成三层:表示层、业务逻辑层、数据层。 引用[4]中的MVC模型可能帮助解释各层的职责,模型(Model)对应数据层,视图(View)对应表示层,控制器(Controller)对应业务逻辑层。不过MVC通常是设计模式,与架构层次有所不同,但可以借鉴。 此外,引用[5]提到Web服务器和Servlet容器的交互,可能涉及中间层,如Web服务器作为表示层,Servlet处理业务逻辑,数据库作为数据层。这符合三层架构的结构。 因此,综合这些信息,B/S三层架构的示意图应包含: 1. 表示层(浏览器):处理用户界面和输入。 2. 业务逻辑层(Web服务器/Servlet):处理应用程序的业务规则和逻辑。 3. 数据层(数据库服务器):负责数据存储和管理。 需要将这些层次结合引用内容进行描述,并解释各层的功能和交互。例如,引用[2]提到客户端结合界面和业务逻辑,但根据三层架构,业务逻辑应放在服务器端,可能需要指出引用中的两层架构与三层架构的区别,并说明如何扩展为三层。 最后,生成相关问题,确保问题与主题相关,并参考提供的引用内容。例如,关于B/S与C/S的区别、业务逻辑层的实现方式、Servlet的作用等。</think>### B/S三层架构示意图及解析 B/S(Browser/Server)三层架构通过将功能模块划分为三个逻辑层次实现网络应用的高效开发与维护。根据引用内容结合行业标准整理如下: #### 图示结构 ``` [浏览器] ↔ [Web服务器/应用服务器] ↔ [数据库服务器] (表示层) (业务逻辑层) (数据层) ``` #### 分层解析 1. **表示层(浏览器)** 负责用户界面展示与交互,通过HTTP协议与服务器通信。 ▸ 示例:浏览器解析HTML/CSS/JavaScript生成可视化界面[^2][^5] ▸ 技术栈:HTML5、Vue.js、React等前端框架 2. **业务逻辑层(Web服务器)** 处理核心业务规则与数据处理流程,引用[4]中提到的模型层在此发挥作用。 ▸ 关键组件:Servlet容器(如Tomcat)、Spring框架 ▸ 功能示例:用户权限校验、订单计算、数据格式转换[^4][^5] ▸ 通信协议:HTTP请求通过Web服务器转发至Servlet处理[^5] 3. **数据层(数据库服务器)** 实现数据持久化存储与高效检索,引用[2]描述的数据库层对应此层。 ▸ 典型配置:MySQL集群、Redis缓存、MongoDB ▸ 数据操作:通过JDBC、MyBatis等组件执行SQL查询[^2] #### 交互流程示例 1. 用户在浏览器提交表单(表示层) 2. Web服务器接收请求并调用Servlet(业务逻辑层) 3. Servlet通过DAO组件查询数据库(数据层) 4. 查询结果经业务逻辑处理后返回JSON数据 5. 浏览器动态渲染最终页面
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值