志在指尖
用双手敲打未来

flask和django的对比(vue和django一点都不搭)

flaskdjango的对比

依据Github排名第二的程序规划言语-Python,有许多可用的Web结构,Django与Flask是两个独立的Python结构,为开发者处理许多杂乱低层代码问题。通常来讲Django常运用于全栈运用开发,而Flask常于服务架构。
一、Flask概述
Flask由澳大利亚工程师ArminRonacher创建,是一个轻量级的微服务结构,让开发者能够自由选择规划形式、数据库及东西。它的学习本钱小,适用于构建可扩展的Web运用。
Flask运用下面两个协议来完成Web通讯以及网站的展示层:
WSGI:用于与web服务器的通讯。
jinja2:用于Web服务的展示层网站界面规划。
1.适用场景
小规划、低杂乱度的项目
集成机构学习或深度学习运用
无服务器的核算
无数据库或NoSQL数据库服务
静态或RESTfulweb服务
2.Flask事例
Netflix运用FlaskAPIs完成局部故障转移以及流星分配。
Airbnb在其Airflow项目中运用Flask,并依据Flask-admin库添加了办理界面。
Uber运用Flask来优化操控、完成动态价格和司机位置定位。
Lyft运用信号模块为web用户交互供给数据。
Pinterest是运用Flask构建大规划网站的开发之一,它在可扩展财富生态体系中运用Flask。
Twilio运用Flask在短时刻内开发出公有和私有依据REST搞用的API。flask
二、Django概述
Django是由作业于LawrenceJournal-World报社的AdrianHolovaty和SimonWillison创建,命名来自于闻名吉他手DjangoReinhardt。2003年开始,2008年发布第一个版别。
Django为开发者供给全栈开发架构,使开发者能够快速安全的构造Web运用。自身供给许多的功用用于构造完整运用,支撑许多格式(HTML、RSS、JSON、XML等等)。别的Django供给安全结构和易于大规划布置的架构。
1.适用场景
需求ORM支撑的Web运用
API后端开发
大规划可扩展的运用
集成ML
数据驱动的运用
2.典型运用
Disqus:博客运用,每月处理来191个国家超20亿用户的5千万评论和170亿的点击量。全站都是依据Django开发,在创建以后十分易于扩容。
Spotify:完成音乐共享,有来自全球的用户一起运用其后台及机器学习体系。
Mozilla:切换到Python及Django架构来满意不断添加的流量及API拜访。
Dropbox:完成一系列功用,如用户历史、跨设备拜访同步、各种文件共享功用等。
Instagram:运用Django在不修改和中断用户界面操作的状况下来满意不断添加的拜访流量。
三、优缺陷
1.Flask长处
简单易学:开发者能够快速把握Web开发,学习、开发、保护运用都相对容易。
易于构建原型:架构抽象层次较少,让开发者能够快速构建原型。
代码库小:根底库代码少,有效降低运用的巨细。
灵敏:开发者能够按需将外部元素加入到项目之中。架构没有严厉的规划形式、协议及数据库要求。每个部件可灵敏替换。
2.Flask缺陷
构建杂乱体系进程较繁琐:在特别杂乱体系里开发者需求引进过多的第三方库,形成代码库保护费事。
处理多恳求时开销比较大:因为没有内置的异步机制,处理许多恳求时会花费过多的时刻。
安全危险:因为内置功用较少而引用许多的第三方东西库,对体系的安全带来较大危险。
保护本钱高:在长时刻运转及开发进程中,保护过多的第三方库(例如库的抛弃、不兼容)会带来昂贵的本钱。
3.Django长处
快速开发:开发者运用自带丰富的标准库大大削减开发时刻,运用产品快速上线。
扩展好:供给许多办理东西满意体系规划和用户添加的需求,可轻松扩展满意百万级用户拜访恳求。
安全性高:供给许多内置安全东西,保证运用不受常见的跨站攻击、SQL注入等漏洞影响。
灵敏性好:开发中许多东西库及软件库隐藏了开发完成的细节,运用能够依据市场需求快速完成运用功用转化。
对机器学习友好:核算和统计才能使得架构更易于完成机器学习算法。开发者较容易向运用中加入高档功用并完成定制开发。
许多开发者:运用最盛行的Python言语开发,有许多的开发者支撑,社区资源也丰富丰富。
4.Django缺陷
不太合适较小规划的项目:Django是代码密集型结构,会占用较多机器功用及网络带宽。如果项目规划在未来不会扩展太大,学习和运用的本钱会较高。
每次处理一个恳求:不像其它常用的结构,Django自身是单任务,不能一起并发处理多个恳求,而且开发者难经过底层代码修改来供给并发处理功用。(Django出产环境经过Web服务器多线程及音讯队列等能完成运用级别的多恳求及异步处理)
开展较慢:Django结构较庞大,各个模块耦合度高,为了向前兼容,制约结构总体开发及迭代速度。
四、功用及速度比照
Flask在处理JSON格式的恳求及回来时速度很快。它能快速构建MVP形式的运用,同其它Python结构相比,轻量化、高功用、开发栈简单是它的一大特色。关于追求高效开发进程有时并不合适。下图是功用测验的比照图:
Django不是功用最高的结构。所以接下来的问题,运用究竟需求多少的运转速度?在不正确运用Django的状况,会形成一些处理上的瓶颈,例如:高并发的JSON序列化恳求、频繁的数据库与Python目标转化、经过中心处理恳求。
但事实上,这些问题能够经过杰出的开发标准、合理硬件布置以及辨别优化中心功用点来处理。下图是Django与其它言语在不同规格机器上的功用测验成果:
五、其它比较
1.运用架构
Flask对运用的规划及体系结构没有硬性要求。它只供给了一个结构运用完成的蓝图。代码按可复用组件办法组织,由它是微服务架构,不涉及展示层的完成细节。
Django遵从MVT(ModelViewTemplate,模型视图模板)体系架构,是常见MVC的一个变种。两种架构最大的区别是模板文件包括HTML及Django模板言语来动态升成Web网站。在用户有个性化界面需求时,完成起来会十分方便,例如Instagram。
2.可扩展性
Flask依据数据存储支撑供给杰出的可扩展性,服务器数量添加时可加倍提升数据处理功用。但对支撑全局署理以及本地署理(如线程、进程和greenlet)服务器,Flask并没供给相应东西支撑,它约束了Flask的可扩展性。
Django高并发的典型事例是OpenStack、WashingtonPost、Instagram、Spotify等等。这些大型互联网运用体现出它的可扩展才能。它能够和许多运维优化技能结合运用来改善情能及加载时刻,关于数据库、图像以CSS等都是供给了优化东西。依据Django能够允分发挥CDN和云服务的处理方案才能,Django办理东西可完成这些操作功用而不影响运用代码,在远期对可扩展性有要求状况下,Django是一个不错的结构。
3.易于测验才能比较
为了能支撑不同架构的Python运用形式,Flask供给了易于完成运用测验的才能,能够运用Werkzeug测验客户端处理单元测验。它还能够与pytest或unittest结合运用,别的还有一些Flask-Testing扩展模块支撑外部单元测验东西。
Django在测验方面也不成问题,它供给一系列简化测验代码编写进程,它供给丰富的文档来阐明测验站点的办法。开发者可轻松完成逻辑层测验并及供给无过错的终究产品。
4.微服务兼容性
Flask在构建微服务时有如下两种形式:
i.)不运用额外规划形式或依赖包。开发者运用自身插件就能来布置高功用微服务。
ii.)它还供给flask_nameko包装器与Nameko配合完成微服务架构。
两种形式都是构建微服务的有效办法。
Django天然也供给微服务的快速开发功用,它内置了安全、可扩展的微服务后端模块。典型的Django项目能够由微模块组成,在体系架构规划上合理规划微服务模块能够充分运用Django的微服务结构。在许多状况下,Django微服务是为了将ML(机器学习)功用引进到开发项目中。
5.数据库支撑
Flask与数据库无直接相关,开发者能够自由选择数据库及适配器。Flask运用DbAdapters来支撑不同数据库,它运用SQLALchemy来支撑许多依据SQL数据库,运用MongoDbAdapter来拜访MongoDB数据库。在DbAdapters根底上开发者能够扩展以支撑更多类型数据库。
Django官方供给对PostgreSQL,MariaDB,MySQL,Oracle,及SQLite的数据库支撑,经过第三方包能够完成与其它数据库的对接。别的Django还供给多数据源连接支撑,其模型与数据库目标转化、迁移东西极大方便了数据模型规划与同步。能够担任的讲,关于Web站点及运用,Django都是很好的数据库东西。

vue和django一点都不搭

1.在django前端页面无法烘托vuedata数据问题:
用{%verbatim%}{{item.SystemID}}{%endverbatim%}
由于django本身的前端烘托和vue烘托会冲突,所以要做封装。
2.前后端数据传输问题:
1)先说后端传的问题:
一般的数据,不用json封装过的数据,在后端接纳的时分,界说一个变量:vara={{a|safe}},a是后端传给前端的,用的是render回来的办法,但是这仅限极少数的数据格式,数据库导出的,用字典做2层封装的就不能传给vue,还报错。所以用HttpResponse去回来给前端,经过ajax的办法,前端接纳,vue里边的一个methods去接纳:
getCustomers:function(){
var_this=this;
axios.get(’/getdata/’)
.then((response)=>{
this.count1=response.data;
console.log(_this.count1);
alert(_this.count1)
}
)
1
2
},
这儿边的response.data;便是后端回来的json数据,必须用json做封装才干传过去。
3.再说后端接纳的问题:
Django一般的接纳办法用POST/GET.get办法去拿取数据,但是vue封装过的数据,传给后端,接口是不一样的,所以要经过request.body去取出封装在body中的数据{data:数据},传给后端的是个byte类型,经过data.decode(encoding=‘utf-8’)去转化成utf-8的字符办法,这样就拿到了数据。
那么前端vue传数据的办法,也是用ajax的办法,这儿边用的是vue的一个插件,axios这个库,办法如下:submit:function(){
this.count+=1
alert(this.count1)
axios.post(‘/database_info/’,{
1
data1:this.data_base
})
.then(function(response){
console.log(response);
})
.catch(function(error){
console.log(error);
});
}
这儿经过axios的post办法传的数据,其实用get也是一样。data1便是咱们传给后端的数据。flask
4.django改默认数据库为mysql:
首先是要修改setting装备中DATABASES的参数,案例如下:
DATABASES={
‘default’:{
‘ENGINE’:‘django.db.backends.mysql’,#数据库引擎
‘NAME’:‘ava_record’,#你要存储数据的库名,事先要创立之
‘USER’:‘root’,#数据库用户名
‘PASSWORD’:‘123456’,#暗码
‘HOST’:‘192.168.153.5’,#主机
‘PORT’:‘3306’,#数据库运用的端口
}
}
然后,由于用的是mysql,所以还要在你创立的aap目录的__init__.py文件中,参加
importpymysql
pymysql.install_as_MySQLdb()
这样,app调用数据库的时分,django会经过这个去做orm的封装,
如果没有pymysql这个模块的,就需要pipinstall装一个
5.关于数据库时刻字段无法做json封装问题:
数据库中的时刻字段,python默认是不能json封装的,那么就需要对这个字段的数据做处理,我这边是经过一个类办法,json封装的时分,调用这个类办法,去做格式化处理,类如下:
importjson
importdatetime
classDateEncoder(json.JSONEncoder):
defdefault(self,obj):
ifisinstance(obj,datetime.datetime):
returnobj.strftime(’%Y-%m-%d%H:%M:%S’)
elifisinstance(obj,datetime.date):
returnobj.strftime(“%Y-%m-%d”)
else:
returnjson.JSONEncoder.default(self,obj)
调用的时分,用json.dumps(data,cls=DateEncoder),这样就可以json封装了。

未经允许不得转载:IT技术网站 » flask和django的对比(vue和django一点都不搭)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载