当前位置: 首页 > news >正文

flask框架_开发中Django和Flask框架的区别是什么?

ebf5b9219bcb3f08b3c1eb5a823a574b.png

c4bcc8daed376c497a1253f8211ae704.gif

Django和Flask框架的区别是什么?Python中Django框架和Flask框架都是比较常见的,在开发应用系统时,使用框架可以提升开发效率,让应用开发更加规范、拓展性更强,程序员把更多的精力放在业务逻辑的实现上,而不是重复、而复杂的基础环境上。

fb87f9dd1d719e5bf491da9fda96268c.png

想要熟练掌握框架需要先学习框架的基础知识、基本实现原理;结合项目实践,提升编码能力和业务逻辑的理解;翻看框架源码深入理解源码精髓。使用Django和Flask框架在Python编程语言里功能强大和流行的两个框架。不仅在web后端开发、微服务开发,同时在ERP系统开发、API接口开发等领域,这两个框架应用非常广泛。那么Django和Flask的区别是什么呢?


  1、形象类比
  如果Django类似于精装修的房子,自带豪华家具、非常齐全功能强大的家电,什么都有了,拎包入住即可,十分方便。而Flask类似于毛坯房,自己想把房子装修成什么样自己找材料,买家具自己装。材料和家具种类非常丰富,并且都是现成免费的,直接拿过去用即可。


  2、体量上的区别
  Flask:小巧、灵活,让程序员自己决定定制哪些功能,非常适用于小型网站。
  对于普通的工人来说将毛坯房装修为城市综合体还是很麻烦的,使用Flask来开发大型网站也一样,开发的难度较大,代码架构需要自己设计,开发成本取决于开发者的能力和经验。
  Django:大而全,功能极其强大,是Python web框架的先驱,用户多,第三方库极其丰富。
  非常适合企业级网站的开发,但是对于小型的微服务来说,总有“杀鸡焉有宰牛刀”的感觉,体量较大,非常臃肿,定制化程度没有Flask高,也没有Flask那么灵活。

 3、 通过大数据统计分析
  全球着名的stackshare网站对Django和Flask这两个框架的调查分析。
  从全球开发者关注程度上:Django为5.8K,Flask为3.31K
  从国外招聘网站岗位需求上:提到Django的有1.77K,Flask为942
  从着名的问答网站stack overflow提问数量上:Django 196K,Flask为27.6K。
  从全球着名的代码托管平台上的star和fork数量上:Django分别为41.3K、17.8K,Flask分别为43.8K、12.3K。


  4、完成同样一个Hello World功能
  使用Flask来完成:
  (1)安装Flask,pip install flask
  (2)创建my_first_app.py文件,添加如下代码
  完成最简单的Hello World功能,Flask只需要7行代码,非常简单、方便。使用Django来完成:
  (1)安装Django,pip install django
  (2)创建工程项目目录,django-admin startprojectmyproject
  (3)创建子应用,python manage.py startappmyapp
  (4)在myapp应用所在目录中的views.py文件中。
  (5)在myapp应用所在目录中创建urls.py路由文件
  (6)在主路由文件中添加路由。


  实现同样一个功能Flask较为简,代码较少,而Django所涉及到的流程较多,工程项目结构清晰,在大型项目中具有优势。想搞懂Python web开发WSGI协议原理以及实现过程、或者你想灵活定制组件,完全DIY应用、想实现微服务建议选择Flask。如果关注产品的最终交付、想快速开发一个大的应用系统,建议选择Django,想实现的功能都有。

相关文章:

  • 无法从命令行或调试器启动服务.必须首先_Emacs 调试秘籍之 GUD 调试器
  • googlenet网络结构_图像处理必读论文之五GoogLeNet-3
  • 编写tcp服务器发送hex格式_恶意程序编写之免杀基础
  • webgis从基础到开发实践_WebGIS开发进阶练手题(二)
  • idea 启动vue 一会自己停了_这 几个 IDEA,调试的骚操作,用了都说爽!
  • java 桌面应用程序_针对初学Java的小伙伴,入门时应该了解的Java基础知识
  • python面向对象思路_Python基础之面向对象的软件开发思路
  • python主要应用于云计算的哪些方面_python在云计算的应用领域
  • python小程序_如何使用 Python 开发微信小程序
  • 华为平板wps语音朗读_年轻人智慧生活:荣耀笔记本、平板V6,智慧屏X1等多款新品再升级...
  • python复制文件夹所有文件到另外目录_如何使用Python将文件的整个目录复制到现有目录中?...
  • python输入多个数字 找出只出现一个的数字_【算法14】找出数组中两个只出现一次的数字...
  • python随机抽人小程序_python抽人程序初试
  • lodop打印不显示页码_教你9招,一次性解决Excel表格打印问题!
  • 原型和原型链的理解_理解Javascript的原型和原型链
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【391天】每日项目总结系列128(2018.03.03)
  • 2017 年终总结 —— 在路上
  • HashMap ConcurrentHashMap
  • HTTP 简介
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • 工作手记之html2canvas使用概述
  • 前端js -- this指向总结。
  • 驱动程序原理
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 微服务核心架构梳理
  • 我感觉这是史上最牛的防sql注入方法类
  • 组复制官方翻译九、Group Replication Technical Details
  • #每天一道面试题# 什么是MySQL的回表查询
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (MATLAB)第五章-矩阵运算
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (二)JAVA使用POI操作excel
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (转)大型网站架构演变和知识体系
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .Net 知识杂记
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .NetCore项目nginx发布
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数
  • .NET使用存储过程实现对数据库的增删改查
  • .net下简单快捷的数值高低位切换
  • @Autowired和@Resource的区别
  • @ModelAttribute 注解
  • @param注解什么意思_9000字,通俗易懂的讲解下Java注解
  • @Repository 注解
  • @TableId注解详细介绍 mybaits 实体类主键注解
  • @TableLogic注解说明,以及对增删改查的影响
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解