三、WEB框架介绍以及设计模式

news2024/11/25 1:03:38

web框架介绍

什么是web框架

应该叫web应用框架(web application framework),它是一种开发框架。 通俗点来讲,就是用来开发web应用的程序。

为什么要使用框架来开发

互联网行业流行一句话叫“不要重复造轮子”,特别是对于新手和应用层开发人员。对于web开发来说,要提高开发效率,我们需要站在前人的肩膀上,利用成熟的web框架,把精力放在业务逻辑的实现上,不关心底层建设。

开发一个软件项目好比盖房子:

方案一、

  • 购买砖块、木头、水泥、钢筋
  • 打地基
  • 盖房子
  • 装修
  • 购置家具

方案二、

  • 找开发商买毛坯房
  • 装修
  • 购置家具

方案三、

  • 找开发商购买精装修房子
  • 购置家具

很显然如果所有的工作都从头做起的方案一的效率最低,而站在前人的肩膀上的方案四是效率最高的。从方案二开始就好比是封装了底层建设的框架,不同的框架的封装程度不同,自由度和开发效率各不同。

本质上来讲就是一个字快。

如何选择框架

如何选择框架呢?

选择web框架好比买房子选择有实力的开发商。python目前最流行三大框架是Django,Flask,Tornado

  • Django
  • 大而全
  • 入门简单
  • 开发效率极高
  • 最流行
  • 类似于方案四(精装修的房子)
  • Flask
  • 轻量级
  • 自由度高
  • 流行
  • 有一定难度
  • 类似于方案三(毛坯房)
  • Tornado
  • 轻量级
  • 自由度高
  • 异步
  • 难度较大
  • 应用在高并发的场景

所以选择web框架要根据项目的需求,规模,和时间,然后再结合各个框架的特点进行选择。我们接下来要开发的接口自动化平台是一个企业内部平台,用户量有限,需求变动大,开发周期要短,所以选择Django是最佳选择。

django是什么

Django是一个高级的Python Web框架,它的宗旨是:Django makes it easier to build better Web apps more quickly and with less code.

使用Django,你可以在几个小时内将web应用从概念到启动。

Django解决了很多web开发的麻烦,所以你可以专注于编写你的应用,而不需要重新发明轮子。

它是免费和开源的。

  • 开发效率极高
  • 功能全面开箱即用
  • 安全放心
  • 社区活跃,插件丰富

web框架设计模式

认识web框架的设计模式对学习web框架非常重要。本章只是介绍web框架常见的设计模式,不会深入讨论如何设计web框架。

最常见的web框架设计模式有两种:

  • MVC
  • MTV

MVC

经典的MVC模式中:

  • M(model) 业务模型,代表一个存储数据的对象
  • V(view) 用户界面,代表模型数据的可视化
  • C(controller) 控制器,作用于模型和视图上。它控制数据流向,并在数据变化时更新视图。它使视图与模式解耦。

MTV

django的设计模式称为MTV,本质上跟MVC一样,只是叫法不同。

  • M全拼为Model,模型,与MVC中的M功能相同,负责和数据库交互,进行数据处理
  • V全拼为View,视图,与MVC中的C功能相同,接收请求,进行业务处理,返回响应
  • T全拼为Template, 模板,与MVC中的V功能相同,负责构造要返回的html页面

MTV框架图如下:

django中数据流和请求流程如下:

  1. 用户通过浏览器发起请求
  2. view根据请求和业务逻辑向model获取或者发送数据
  3. model根据视图的要求和数据库进行交互
  4. view收到model返回的结果后将结果发送给template
  5. template将收到的数据渲染成最终的html返回给view
  6. view将最终包含结果数据的html返回给用户

 

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

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

相关文章

day22-JDK新特性

接口中的新特性 接口我们之前已经学过了,那么接口中内部主要就是封装了方法,包含抽象方法(JDK 7及以前),默认方法和静态方法(JDK 8),私有方法 (JDK 9)。 接口…

使用Navicat导入和导出sql语句

创建mysql数据库 创建数据库之前,肯定要先连接上数据库,如果不知道怎么使用navicat连接mysql数据库,可以参考之前的文章哦 https://blog.csdn.net/weixin_43860634/article/details/128716733 接下来进入正题 1、首先要双击test &#xff0…

命令注入与dvwa中的Command Injection

一、什么是命令注入?即 Command Injection,是指通过提交恶意构造的参数破坏命令语句结构,从而达到执行恶意命令的目的。此攻击与代码注入不同,因为代码注入允许攻击者添加自己的代码,然后由应用程序执行。 在命令注入中…

用队列实现栈

题目:225. 用队列实现栈 - 力扣(LeetCode)准备工作这题明确说明了需要用队列来实现栈,介于C语言没有队列的库,所以在此之前我们需要用调用之前学的队列,详见队列typedef int QDataType;typedef struct Queu…

Ubuntu上安装 Hadoop 3详细过程(验证+填坑总结)

Ubuntu上安装 Hadoop 3 前提条件: Python 推荐3.8JDK 推荐1.8 解压安装 sudo tar -zxvf hadoop-3.3.0.tar.gz -C /usr/local cd /usr/local sudo mv hadoop-3.3.0 hadoop sudo chown -R hadoop ./hadoop 配置环境变量 vim ~/.bashrc # hadoop export H…

云原生安全系列 5:ETCD 安全加固

引言 etcd是一个强一致性的分布式键值存储,它提供了一种可靠的方式来存储需要被分布式系统或机器集群访问的数据。通过 raft 算法它能在网络分区期间优雅地处理领导者的选举,并能容忍机器故障,甚至在领导者节点上。除此之外, etc…

存储过程的基础知识

本文来简单说下存储过程的基础知识 文章目录概述什么是存储过程存储过程的优缺点概述 mysql官网提供的储存过程:https://www.mysqlzh.com/doc/225/499.html 什么是存储过程 简单的说,存储过程是一条或者多条SQL语句的集合,可视为批文件&…

Windows下更改yarn的安装位置,减小C盘占用

Windows下更改yarn的安装位置,减小C盘占用 绷不住了,yarn的C盘占用太高了,我这C盘感觉以后会受不了,太大了~~(捂脸~~ nnd,撸他,更改yarn的位置开始! 先看看yarn目前的位置 检查当前…

「自控原理」2.4 信号流图与梅逊公式、闭环传递函数

本节引入了信号流图以及梅逊增益公式,可以据此快速对系统进行化简 本节引入了闭环传递函数的概念,并介绍了常用的闭环传递函数 文章目录信号流图的基本概念信号流图与方框图的关系从结构图绘制信号流图从信号流图绘制结构图梅逊(Mason)增益公式Mason公式…

Workfine5.0扩展功能——如何识别身份证信息?

哈喽,我是办公助手小W,又到了跟大家分享办公小技巧的时候啦! 最近Workfine5.0最新版本上线后,大家最感兴趣的就是它的扩展功能了,今天要跟大家分享的就是如何实现身份证信息的提取。 首先咱们先要知道如何下载安装扩…

(第五章)OpenGL超级宝典学习:缓冲

缓冲 前言 本篇在讲什么 关于OpenGL数据缓冲的相关内容 本篇适合什么 适合初学OpenGL的小白 想了解OpenGL缓冲对象的同学 本篇需要什么 对C语法有简单认知 对OpenGL有简单认知 最好是有OpenGL超级宝典蓝宝书 依赖Visual Studio编辑器 本篇的特色 具有全流程的图文…

使用OpenCV透视变换技术实现坐标变换实践

1. 概述 1.1. 需求 在局部空间(无GPS定位)视频监控过程中,把视频识别到物体位置,投射到空间平面坐标系中,获取物体在局部空间的平面坐标。 1.2. 解决方案 使用图像透视变换技术。 1.3. 透视变换概念 透视变换是指…

链路追踪组件Skywalking使用

前言Skywalking是一个国产开源框架,2015年由吴晟开源 , 2017年加入Apache孵化器,其用于追踪多微服务模块调用之间日志的追踪,协助程序员进行排除问题Skywalking架构Skywalking架构图大概如下SkyWalking OAP: SkyWalkin…

如何格式化U盘?以及优盘格式化的恢复方法

我们经常使用U盘来进行存储和传输数据,使用时间久了,可能需要我们进行优盘格式化。需要注意!优盘格式化之前,记得对里面的数据进行备份,防止数据清空造成不必要的损失。 如何进行U盘格式化?格式化优盘后&a…

“深度学习”学习日记。误差反向传播法--加法层、乘法层、激活函数层的实现

2023.1.16 1、加法层、乘法层: 前两篇文章都在讲述理论,今天实现代码操作:关于加法节点,乘法节点的内容在这篇文章。 https://blog.csdn.net/m0_72675651/article/details/128695488 在以后的学习中,将把构建神经网…

AHOcoder声码器

AHOcoder声码器 目前最常见的声码器有WORLD,STRAIGHT,Griffin_Lim等,AHocoder算是少见的,但也可以学习一下。 代码下载网址:AHOcoder 简介 AHOcoder 语音声码器由 Daniel Erro 在巴斯克大学的 AHOLAB 信…

若依配置教程(一)运行若依系统

一、下载源代码 若依的源代码是开源的,所以我们在若依的官方网站即可进行下载,若依的官网是:http://doc.ruoyi.vip/ruoyi-vue/,进入官网后,会显示代码下载的地址:https://gitee.com/y_project/RuoYi-Vue&a…

【进阶】Bean作用域和生命周期

努力经营当下,直至未来明朗! 文章目录一、通过⼀个案例来看 Bean 作⽤域的问题1. 被修改的Bean案例2. 原因分析二、作用域Scope定义1. Bean的六种作用域(重点)1)singleton2)prototype3)request4…

JVM——类加载与字节码技术(2)

三、编译期处理 所谓的 语法糖 ,其实就是指 java 编译器把* .java 源码编译为* .class 字节码的过程中,自动生成和转换的一些代码,主要是为了减轻程序员的负担,算是 java 编译器给我们的一个额外福利 【注意】以下代码的分析&am…

Python爬虫之基于 selenium 实现文献信息获取

目录初识 selenium网页分析代码实现踩过的坑最近有小伙伴后台跟我说,临近毕业,写毕业论文需要上知网查找大量的文献,但是一篇一篇看文献信息以及文献摘要又有点麻烦,能不能让我写一个爬虫去批量获取文献相关信息 我一听好家伙&am…