Django框架之python后端框架介绍

一、网络框架及MVC、MTV模型

1、网络框架

网络框架(Web framework)是一种软件框架,用于帮助开发人员构建Web应用程序和Web服务。它提供了一系列预先编写好的代码和工具,以简化开发过程并提高开发效率。网络框架通常包括以下功能和特点:

  1. 路由处理(Routing): 网络框架定义了URL与处理程序之间的映射关系,即路由,以确定请求应该由哪个处理程序处理。

  2. 模板引擎(Template Engine): 提供了模板系统,用于动态生成HTML、XML或其他文档。开发人员可以在模板中插入变量、逻辑和数据,以生成最终的页面内容。

  3. 数据访问和ORM(Object-Relational Mapping): 网络框架通常提供简化数据库访问的工具,包括ORM库,使开发人员能够使用面向对象的方式操作数据库。

  4. 安全性功能: 提供了一些安全功能,如用户认证、授权、CSRF(Cross-Site Request Forgery)保护等,以帮助开发人员构建安全的Web应用程序。

  5. 会话管理(Session Management): 提供了会话管理功能,用于跟踪用户的状态和数据,以便在请求之间保持用户的身份和状态信息。

  6. 错误处理: 网络框架通常提供了统一的错误处理机制,以便开发人员能够捕获和处理应用程序中的错误。

  7. 中间件支持: 允许开发人员通过中间件来扩展框架的功能,例如添加日志记录、缓存、性能监控等功能。

  8. RESTful支持: 一些网络框架提供了对RESTful架构风格的支持,使开发人员能够更轻松地构建RESTful API。

常见的网络框架包括Django(Python)、Flask(Python)、Ruby on Rails(Ruby)、Express.js(Node.js)、Spring MVC(Java)等。这些框架使开发人员能够专注于业务逻辑的实现,而无需从头开始构建Web应用程序的基本功能。

2、MTV与MVC模型

MTV(Model-Template-View)和MVC(Model-View-Controller)是两种常见的软件架构模式,通常用于组织和管理Web应用程序中的代码和逻辑。下面是它们的简要介绍:

(1)MVC(Model-View-Controller)模式:

  1. Model(模型):
    • 模型表示应用程序的数据结构和业务逻辑。
    • 它负责处理数据的存储、检索、更新和删除等操作。
  2. View(视图):
    • 视图是用户界面的表示,负责将数据呈现给用户。
    • 视图通常从模型中获取数据,并将其展示给用户。
  3. Controller(控制器):
    • 控制器充当模型和视图之间的中介,处理用户输入和应用程序逻辑。
    • 控制器接收用户的请求,更新模型的状态,并选择合适的视图来展示给用户。
  4. 简易图

在这里插入图片描述

  1. 用户操作流程图

在这里插入图片描述

在MVC模式中,模型、视图和控制器之间有明确的分离,每个部分都有其特定的责任,这样有助于代码的组织、维护和扩展。

(2)MTV(Model-Template-View)模式:

  1. Model(模型):

    • MTV模式中的模型与MVC中的模型类似,负责处理应用程序的数据逻辑。
  2. Template(模板):

    • 模板类似于MVC中的视图,负责定义应用程序的用户界面。
    • 模板通常包含静态内容和动态数据的插值。
  3. View(视图):

    • 视图在MTV中扮演控制器的角色,负责处理用户请求和业务逻辑。
    • 视图接收用户的输入,从模型中检索数据,并将数据传递给模板进行呈现。
  4. 简易图

在这里插入图片描述

  1. 用户操作流程图

在这里插入图片描述

(3)区别与联系:

  • 联系: MTV模式是Django Web框架中采用的架构模式,与传统的MVC模式有一些区别,但基本概念相似,都旨在实现代码的分离和组织。

  • 区别: 主要区别在于模板(Template)的引入,MTV将视图(View)和模板(Template)分开,使得视图负责处理业务逻辑,而模板专注于呈现数据。

无论选择MVC还是MTV,都旨在帮助开发者更好地组织和管理其代码,提高代码的可维护性和可扩展性。

二、python主流的web框架

1、Django框架

Django是一个流行的Python网络框架,具有以下特点和组成结构:

(1)特点:

  1. 全功能性: Django是一个全功能的网络框架,提供了许多内置功能,如认证系统、管理界面、表单处理、会话管理等,使开发人员能够快速构建复杂的Web应用程序。

  2. MVC架构: Django遵循MVC(Model-View-Controller)架构模式,但稍有不同,它使用MTV(Model-Template-View)模式。这种模式将应用程序的逻辑分为模型(Model)、模板(Template)和视图(View),使代码更易于组织和维护。

  3. ORM支持: Django提供了强大的ORM(Object-Relational Mapping)系统,使开发人员能够使用Python代码而不是SQL语句来操作数据库,从而简化了数据访问层的开发。

  4. 自动化管理界面: Django自带一个自动生成的管理界面,开发人员无需编写额外的代码即可管理应用程序的数据模型,包括添加、编辑和删除数据。

  5. 安全性: Django具有内置的安全功能,如跨站点请求伪造(CSRF)保护、XSS(跨站脚本攻击)保护、点击劫持保护等,帮助开发人员构建安全的Web应用程序。

  6. 灵活性和可扩展性: Django提供了许多可插拔的应用程序,使开发人员能够根据需求选择性地扩展框架的功能,同时保持灵活性。

(2)组成结构:

  1. 模型(Model): 模型定义了应用程序的数据结构,以及与数据库的交互方式。开发人员使用Django的ORM系统定义模型,无需直接编写SQL语句。

  2. 模板(Template): 模板负责生成最终的用户界面,通常包含HTML和模板语言(如Django模板语言)的混合。开发人员可以在模板中插入动态数据,以呈现最终的页面。

  3. 视图(View): 视图处理用户请求并返回响应,通常包括业务逻辑和数据处理。视图从模型中检索数据,将其传递给模板进行渲染,并返回最终的响应。

  4. 路由(URLconf): 路由将URL映射到相应的视图函数,以确定哪个视图应该处理特定的请求。开发人员在URLconf中定义URL模式和相应的处理视图。

  5. 管理界面: Django自动生成的管理界面允许开发人员轻松管理应用程序的数据模型,包括添加、编辑和删除数据,而无需编写额外的代码。

总的来说,Django是一个功能强大且易于使用的网络框架,适用于构建各种规模的Web应用程序。

2、flask框架

Flask是另一个流行的Python网络框架,具有以下特点和组成结构:

(1)特点:

  1. 轻量级: Flask是一个轻量级的网络框架,具有简单的核心,但可以通过扩展来添加所需的功能,使其适用于小型到中型的Web应用程序。

  2. 灵活性: Flask提供了灵活的核心,允许开发人员根据需要选择适合其项目的扩展,从而定制框架以满足特定需求。

  3. 简单易用: Flask的API设计简单易懂,使得快速上手和快速开发成为可能,适合初学者和有经验的开发人员。

  4. WSGI兼容: Flask完全兼容WSGI(Web Server Gateway Interface),可以与各种WSGI兼容的Web服务器(如Gunicorn、uWSGI等)配合使用。

  5. 扩展性: Flask提供了大量的扩展,涵盖了各种功能,如表单验证、ORM、认证等,开发人员可以根据需要选择并集成这些扩展。

  6. Jinja2模板引擎: Flask使用Jinja2作为默认的模板引擎,使开发人员能够轻松地在应用程序中编写动态内容。

(2)组成结构:

  1. 应用对象: Flask应用程序的核心是Flask类的实例,它充当应用程序的中心控制器。开发人员通过创建Flask应用对象来构建Web应用程序。

  2. 路由: 路由是URL与视图函数之间的映射关系,定义了不同URL请求应该由哪个视图函数处理。在Flask中,使用装饰器来定义路由。

  3. 视图函数: 视图函数是处理Web请求的Python函数,接收请求并返回响应。在Flask中,每个视图函数都与一个特定的URL路由关联。

  4. 模板: Flask使用Jinja2模板引擎来生成动态内容,开发人员可以创建包含动态数据和逻辑的模板文件,然后在视图函数中渲染这些模板。

  5. 扩展: Flask提供了许多扩展,如Flask-SQLAlchemy(ORM库)、Flask-WTF(表单验证)、Flask-Login(用户认证)等,开发人员可以根据需要选择并集成这些扩展。

  6. 上下文: Flask使用上下文来在请求处理过程中共享数据,包括应用上下文和请求上下文,使开发人员能够方便地访问请求相关的信息。

总的来说,Flask是一个灵活、轻量级且易于使用的网络框架,适用于快速开发小型到中型的Web应用程序。通过选择合适的扩展和组件,开发人员可以定制和扩展Flask以满足其特定需求。

3、tornado框架

Tornado是另一个流行的Python网络框架,主要用于构建高性能的异步Web应用程序。以下是Tornado框架的特点和组成结构:

(1)特点:

  1. 异步IO: Tornado是基于异步IO的网络框架,采用非阻塞IO模型,能够处理大量并发连接而不会阻塞整个应用程序。

  2. 高性能: 由于其异步IO模型和事件驱动的设计,Tornado在处理大量并发连接时表现出色,适用于需要高性能的Web应用程序。

  3. 长连接支持: Tornado对长轮询、WebSockets等长连接协议提供了良好的支持,适用于实时通讯和推送类应用。

  4. 轻量级: Tornado的设计简单而轻量,专注于网络应用程序的开发,使其易于学习和使用。

  5. 内置协程支持: Tornado内置了协程库,使开发人员能够编写使用协程的异步代码,简化了异步编程的复杂性。

  6. 安全性: Tornado具有一些内置的安全功能,如防止跨站点请求伪造(CSRF)攻击等,有助于保护Web应用程序的安全性。

(2)组成结构:

  1. 应用对象: Tornado应用程序的核心是Application类的实例,它充当应用程序的中心控制器,负责处理HTTP请求和调度处理程序。

  2. 路由: 路由是URL与处理程序之间的映射关系,定义了不同URL请求应该由哪个处理程序处理。在Tornado中,使用路由表来配置URL路由。

  3. 处理程序: 处理程序是用于处理HTTP请求的Python类或函数,开发人员可以编写处理程序来处理不同类型的请求,如GET、POST等。

  4. 模板: Tornado提供了模板系统,允许开发人员创建包含动态内容的HTML模板,然后在处理程序中渲染这些模板以生成最终的响应。

  5. 异步IO循环: Tornado框架通过事件循环来管理异步IO操作,确保在处理大量并发连接时能够高效地执行异步操作。

  6. WebSocket支持: Tornado提供了对WebSocket协议的原生支持,使开发人员能够轻松地构建实时通讯和推送类应用。

  7. 安全性机制: Tornado提供了一些内置的安全性机制,如XSRF防护、安全Cookie等,有助于保护Web应用程序免受常见的Web安全威胁。

总的来说,Tornado是一个高性能的异步网络框架,适用于需要处理大量并发连接和实时通讯的Web应用程序。其简单的设计和强大的异步IO支持使其成为构建高性能网络应用程序的理想选择。

4、fastapi框架

FastAPI是一个现代的Python Web框架,它结合了快速(Fast)和API构建(API)的特点。以下是FastAPI框架的特点和组成结构:

(1)特点:

  1. 快速: FastAPI被设计为一个高性能的框架,利用Python类型提示(Type Hints)和Pydantic库的数据验证功能,实现了快速的请求处理和响应生成。

  2. 易用性: FastAPI提供了简洁的API设计方式,开发人员可以使用Python类型提示来定义API的输入和输出,从而提高了代码的可读性和可维护性。

  3. 自动文档生成: FastAPI可以自动生成交互式API文档(Swagger UI和Redoc),开发人员可以通过浏览器直观地查看API的各种端点、参数和响应。

  4. 数据验证: 基于Pydantic库,FastAPI可以自动验证请求数据的结构和类型,并在必要时进行数据转换,从而减少了开发人员处理数据验证的工作量。

  5. 异步支持: FastAPI原生支持异步编程,可以利用Python的async/await语法来处理异步请求,提高了处理并发请求的效率。

  6. 依赖注入: FastAPI内置了依赖注入系统,可以方便地管理应用程序的依赖关系,使代码更加模块化和可测试。

  7. 安全性: FastAPI提供了一些内置的安全功能,如API密钥认证、OAuth2认证等,有助于保护API免受恶意访问。

(2)组成结构:

  1. 应用对象: FastAPI应用程序的核心是一个FastAPI实例,它包含了所有的路由和处理程序,负责处理HTTP请求并生成响应。

  2. 路由: 路由定义了URL路径与处理程序之间的映射关系,开发人员可以使用装饰器来定义不同URL路径的处理程序。

  3. 请求处理程序: 请求处理程序是用于处理HTTP请求的Python函数,可以使用async/await语法来处理异步请求,从而提高性能。

  4. 响应模型: FastAPI通过Pydantic模型来定义API的请求和响应数据结构,确保数据的类型和结构符合预期。

  5. 依赖注入: FastAPI使用依赖注入系统来管理应用程序的依赖关系,可以将依赖项注入到处理程序中,使代码更加模块化和可测试。

  6. 自动文档生成: FastAPI可以自动生成交互式API文档,展示API的端点、参数、请求和响应数据结构,帮助开发人员快速了解和测试API。

  7. 安全性功能: FastAPI提供了一些内置的安全功能,如API密钥认证、OAuth2认证等,帮助开发人员保护API免受恶意访问。

总的来说,FastAPI是一个现代化、高性能的Python Web框架,具有简洁的API设计、自动生成文档和数据验证等特点,适用于构建快速、安全且易维护的API应用程序。

三、总结

1、python四大主流框架小结

(1)Django

  • 特点: 大而全,自带的功能特别特别特别的多,类似于百科全书
  • 不足之处:
    • 有时候过于笨重

(2)flask

  • 特点: 小而精,自带的功能特别特别特别的少,类似于游骑兵,单兵作战
    • 但是第三方的模块特别特别的多,如果将flask第三方的模块加起来完全可以盖过Django并且也越来越像Django
  • 不足之处:
    • 比较依赖于第三方的开发者

(3)tornado

  • 特点: 异步非阻塞,支持高并发。可以开发游戏服务器

(4)fastapi

  • 特点: 支持异步,比较快。内置了很多高级的功能

2、web框架三部分

  • A:socket部分
  • B:路由与视图函数对应关系(路由匹配)
  • C:模版语法

3、三种主流框架三部分的使用情况

(1)Django

  • A用的是别人的 wsgiref模块
  • B用的是自己的
  • C用的是自己的(没有jinja2好用,但是也很方便)

(2)flask

  • A用的是别人的 werkzeug(内部还是wsgiref模块)
  • B自己写的
  • C用的是别人的(jinja2)

(3)tornado

  • A、B、C都是自己写的

四、Python框架官网(部分)

框架的核心逻辑几乎是一致的 我们在学习的时候只需要先学会一种之后就可以触类旁通

  • Django框架官网:https://www.djangoproject.com/
  • Flask框架官网:https://flask.palletsprojects.com/en/3.0.x/
  • Fastapi框架官网:https://fastapi.tiangolo.com/
  • Pyramind框架官网:https://trypyramid.com/
  • Tornado框架官网:https://www.tornadoweb.org/en/stable/
  • Sanic框架官网:https://github.com/sanic-org/sanic
  • Fastapi框架官网:https://fastapi.tiangolo.com/
  • Aiohttp框架官网:https://docs.aiohttp.org/en/stable/
    .com/en/3.0.x/
  • Fastapi框架官网:https://fastapi.tiangolo.com/
  • Pyramind框架官网:https://trypyramid.com/
  • Tornado框架官网:https://www.tornadoweb.org/en/stable/
  • Sanic框架官网:https://github.com/sanic-org/sanic
  • Fastapi框架官网:https://fastapi.tiangolo.com/
  • Aiohttp框架官网:https://docs.aiohttp.org/en/stable/

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

go语言并发实战——日志收集系统(十) 重构tailfile模块实现同时监控多个日志文件

前言 在上一篇文章中,我们实现了通过etcd来同时指定多个不同的有关分区与日志文件的路径,但是锁着一次读取配置的增多,不可避免的出现了一个问题:我们如何来监控多个日志文件,这样原来的tailFile模块相对于当下场景就…

【JavaScript】内置对象 ④ ( Math 内置对象常用方法 | 取绝对值 | 向下取整 | 向上取整 | 四舍五入取整 | 取随机数 )

文章目录 一、Math 内置对象常用方法1、计算绝对值 - Math.abs2、取整计算 - Math.floor 向下取整 / Math.ceil 向上取整 / Math.round 四舍五入3、随机数 - Math.random4、代码示例 - 猜随机数 一、Math 内置对象常用方法 1、计算绝对值 - Math.abs 向 Math.abs() 方法中 传入…

简单的jmeter脚本自动化

1、创建线程组,定义自定义变量,保存请求默认值 2、用csv编写测试用例 备注:如果单元格内本身就有引号,则格式会有点小问题,不能直接修改为csv 用txt打开后 有引号的需要在最外层多包一层引号,每个引号前…

LM1875L-TB5-T 音频功率放大器 PDF中文资料_参数_引脚图

LM1875L-TB5-T 规格信息: 商品类型音频功率放大器 音频功率放大器的类型- 输出类型1-Channel (Mono) 作业电压16V ~ 60V 输出功率25W x 1 4Ω 额外特性过流保护,热保护 UTC LM1875是一款单片功率放大器,可为消费类音频应 用提供极低失真和高品质的…

外星人电脑丢失文件怎么找回?六大方法助你重获希望

对于许多依赖电脑进行日常工作和娱乐活动的用户来说,电脑中存储的文件无疑是宝贵的财富。然而,意外总是难以避免,外星人电脑也不例外。文件丢失、误删、硬盘故障等问题都可能给用户带来不小的困扰。那么,当外星人电脑遭遇文件丢失…

南京邮电大学计算机组成与结构四次实验报告

文章目录 资源链接预览实验一:算术逻辑运算实验实验二:存储器和总线实验实验三:通用寄存器实验实验四:综合实验的调试 资源链接 资源链接 预览 实验一:算术逻辑运算实验 实验二:存储器和总线实验 实验三&…

07 流量回放实现自动化回归测试

在本模块的前四讲里,我向你介绍了可以直接落地的、能够支撑百万并发的读服务的系统架构,包含懒加载缓存、全量缓存,以及数据同步等方案的技术细节。 基于上述方案及细节,你可以直接对你所负责的读服务进行架构升级,将…

pytorch-激活函数与GPU加速

目录 1. sigmod和tanh2. relu3. Leaky Relu4. selu5. softplus6. GPU加速7. 使用GPU加速手写数据训练 1. sigmod和tanh sigmod梯度区间是0~1,当梯度趋近0或者1时会出现梯度弥散的问题。 tanh区间时-1~1,是sigmod经过平移和缩放而…

第 3 篇 : Netty离线消息处理(可跳过)

说明 仅是个人的不成熟想法, 未深入研究验证 1. 修改 NettyServerHandler类 package com.hahashou.netty.server.config;import com.alibaba.fastjson.JSON; import io.netty.channel.Channel; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHan…

云计算时代:SFP、SFP+、SFP28、QSFP+和QSFP28光纤模块详解

随着数据中心的快速发展和云计算的广泛应用,高速、高效率的光纤网络传输成为关键需求。在众多光纤模块中,SFP、SFP、SFP28、QSFP和QSFP28是最常见的几种类型。本文将为您详细解析这几种光纤模块之间的区别,帮助您更好地了解和选择适合自己需求…

【产品经理修炼之道】- B端产品用户层级与需求优先级

B端的需求和C端有比较大的差异:C端的用户画像,在B端更多是以角色、权力和义务的划分。在这种情况下,我们的需求处理方式也会有所不同。 交互设计其实就是用户的行为设计,既然是围绕用户的行为,那么我们首先得清楚我们的…

flutter 微信输入框 (第二版)

微信的聊天输入框之前实现了一个版本(flutter 微信聊天输入框_flutter 聊天输入框-CSDN博客), 但是之前实现的不太优雅。这两天重写了一遍。效果如下: 1.页面拆分 这里我们把 聊天的页面进行 拆分:Scaffold &#xff0…

免费预约即将截止,5月7日上海TCT亚洲3D打印展参观指南,收藏!

进入TCT亚洲展官网(网页搜索TCT亚洲展),免费登记预约 2024年TCT亚洲展作为推动增材制造在亚洲市场的业务交流的重要平台,将于2024年5月7日至9日在国家会展中心(上海)7.1&8.1馆举办,与海内外…

二 SSM整合实操

SSM整合实操 一 依赖管理 数据库准备 mysql8.0.33 CREATE DATABASE mybatis-example;USE mybatis-example;CREATE TABLE t_emp(emp_id INT AUTO_INCREMENT,emp_name CHAR(100),emp_salary DOUBLE(10,5),PRIMARY KEY(emp_id) );INSERT INTO t_emp(emp_name,emp_salary) VALUE…

短视频素材有哪些?短视频素材哪一类最吸引人?

随着视频内容在全球各种媒体和平台上的普及,寻找能够让你的项目脱颖而出的视频素材变得尤为重要。以下视频素材网站各具特色,提供从自然风景到都市快照,从简单背景到复杂动画的多样选择。 1. 蛙学府(中国) 提供4K高解…

全志ARM-蜂鸣器

操作准备: 1.使Tab键的缩进和批量对齐为4格 在/etc/vim/vimrc 中添加一项配置 set tabstop 4; 也可以再加一行 set nu显示代码的行数 vim的设置,修改/etc/vim/vimrc文件,需要用超级用户权限 /etc/vim/vimrc set shiftwidth4 设置批量对…

VsCode一直连接不上 timed out

前言 前段时间用VsCode连接远程服务器,正常操作后总是连接不上,折磨了半个多小时,后面才知道原来是服务器设置的问题,故记录一下,防止后面的小伙伴也踩坑。 我使用的是阿里云服务器,如果是使用其他平台服务…

web(微博发布案例)

示例&#xff1a; 1、检测空白内容 2、发布内容 html: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta …

vue+element之解决upload组件上传文件失败后仍显示在列表上、自动上传、过滤、findIndex、splice、filter

MENU 前言错误案例(没有用)正确方法结束语 前言 el-upload上传失败后&#xff0c;文件仍显示在列表上。 这个pdf文件上传失败&#xff0c;仍显示在列表&#xff0c;给人错觉是上传成功&#xff0c;所以要把它去掉。 在element中&#xff0c;file-list和v-model:file-list是用于…

苹果一次性开源了8个大模型! 包含模型权重、训练日志和设置,OpenELM全面开源

不以开放性著称的苹果居然同时开源了大模型的权重、训练和评估框架&#xff0c;涵盖训练日志、多个保存点和预训练设置。同时升级计算机视觉工具包 CVNets 为 CoreNet&#xff01;支持 OpenELM&#xff01; ▲图1.由Stable Diffusion3生成。 OpenELM是Apple苹果公司最新推出的…