2019.1 flask star - django star = 2000
2020.3 flask star - django star = 1600
小总结:Django
1.开箱即用,
2.适合团队协作 (以独立app开发 )
3.经过大量生产考验,比较稳定(Instagram,领英,NASA,Mozilla,国家地理杂志,Open Knowledge
Foundation,Pinterest和Open Stac)
4.教科书级的文档(建议出本书)。
5.觉得 Sqlalchemy 文档是天书~~
6.有干爹 (Django基金会,Instagram)
7.自带调试shell,自带migrations,以及根据数据库表反向生成 models ( inspectdb)
8.自带缓存系统cache,可以缓存python对象到 redis
9.自带文件存储后端storage 。
Flask
1. 单文件跑web,比如我就3个接口,一个文件足够了!
2. 我就不想用 Django的 User ,admin ,Session,permission
3. 单纯的返回Json 简单数据,没有用户系统。
4. 独立开发,自己维护。
1
sunkai0609 2020-03-13 17:38:12 +08:00
python 讲性能。。。,都是用来做小项目吧,哪个顺手用哪个
|
2
mywaiting 2020-03-13 18:15:26 +08:00 4
因为大家都发现,想要 Flask 完整具备线上跑产品的能力,最后都各种加插件
加 Jinja 做模板 加 SQLAlchemy 做 ORM 加 WTForms 做表单校验 加 Pybabel 做本地化 i18n 把这些插件都加上后 大家发现自己不过是重新造了一个 Django 的轮子 最关键的是,这轮子造得别扭做作,还不如 Django 大而全全内置的好用 于是大家又回到 Django 的怀抱说真香~ 顺便说,想要 Flask 用得好,还要去看一遍 Werkzeug 才算理解深刻,不然,你能明白 Flask 的 g 是怎么实现的??? |
3
windfarer 2020-03-13 18:17:26 +08:00 via Android
楼上说得对
|
4
est 2020-03-13 18:37:54 +08:00
django 本来就很轻量化。
from django.conf.urls import url from django.http import HttpResponse DEBUG = True SECRET_KEY = '2333333' ROOT_URLCONF = __name__ def home(request): color = request.GET.get('color', '') return HttpResponse( '<h1 style="color:' + color + '">Welcome to the Tinyapp\'s Homepage!</h1>' ) # don't use user input like that in real projects! urlpatterns = [ url(r'^$', home), ] 这就是是几乎最小化的单文件例子了。说 flask 性能好主要是指早期 jinja2 把模板编译在内存里了渲染速度快。django 每次渲染都要去本地重新读一遍模板文件。。。。(可以配置 cache ) |
6
oncethink 2020-03-13 18:45:37 +08:00 via iPhone
Django 的项目结构设计得合理,要自己搞不知道会搞成什么模样。
|
7
wangyzj 2020-03-13 18:51:59 +08:00 via iPhone
我之所以用 flask 是因为里面的插件别的时候也用得到
dj 自己的东西 再就是因为 dj 初学上手容易,培训班教的也多,所以 star 多吧 |
8
tiedan 2020-03-13 18:53:30 +08:00
我个人喜欢 Django,用起来很舒服
|
9
hanai 2020-03-13 19:02:06 +08:00
前后端分离和用 django 不冲突啊
|
11
fire2y 2020-03-13 19:17:02 +08:00
django 用起来很轻松 资料也多
|
12
a852695 2020-03-13 19:31:52 +08:00
django 的设计比较好,flask 足够轻量,但是对于多 app 就要自己造轮子
|
13
johnsona 2020-03-13 19:50:04 +08:00 7
我特意注册账号来回答,django 和 flask 都在实际开发中用过。我的答案是别用 flask,用 django,用 drf
flask 适合萌新上来搞清楚 web 开发在干嘛,就像一间毛坯房,你进去就知道,房子长这样,房子是用来住的 django 就像精装修的房子,他告诉你房间应该怎么设计,房子里应该有客厅、电视、沙发,我都给你准备好了。flask 就是让你自己去隔出来客厅,自己去外面买电视、沙发。听起来好,结果装修把你累死了,装修起来的房子还没 django 漂亮,还花了大量的时间,你还美滋滋到处说 flask 轻,django 重。你怎么不说 spring 重呢,有本事你别用 spring。 对比: 1.flask 没有 orm,自己找第三方。python 能打的就 sqlalchemy,功能多,但很多你用不上,而且难用,而且用法丑陋。django 自带 orm 好用,但是高级用法难用,但你可以直接写 sql。 2.在 rest 开发中,flask 的第三方扩展 flask-restful 和 flask 真是一脉相承,要啥啥没有。django 的第三方扩展 drf,一堆东西,序列化,认证,限流、权限。而且源代码质量很高(我就是萌新,怎么了?),通过 drf 你还能学到 web 开发中很多设计方面的知识,比如权限怎么设计,怎么在代码中实现,django 已经手把手教你了,别再去用 flask 自己拍脑袋想了 3.flask 和 django 的第三方扩展对比,django 的扩展开箱即用,写几句配置就完事了。flask,呵呵,找半天找一个还要自己写不少东西,出了问题没人问。 4.单元测试,flask 要自己用 pytest 或者 unittest。django 创建的项目模板里面就有,照着他的写就好了。 5.flask 大型项目要自己设计项目结构,还容易被坑。比如循环引用,找不到 request 或者 g 这个请求上下文。django:没听说过 6. flask 优点,直观,具体。django 缺点,抽象层次高,有的东西给萌新看可能一下子就懵了,为什么要有一个 form 对象,和前端表单傻傻分不清楚,serializer 对象又是什么,为什么要有,session 是干嘛的?匿名用户又是什么鬼。但其实这不是 django 的缺点,而是你对 web 开发不够了解,包括 session 怎么在数据库中存储等等。写了好多,把 flask 批判了一凡想搞个大新闻,下班了 |
14
johnsona 2020-03-13 19:57:27 +08:00
还有巨多要吐槽的,django 文档会教给你很多 web 开发的东西,flask,就小册子,剩下自己想去吧你
|
15
lsvih 2020-03-13 20:01:46 +08:00
DRF 相当好用
|
16
ITsWHY 2020-03-13 20:07:38 +08:00 via Android
请问有没有什么开源的 django 项目适合刚入门的初学者学习的?
|
17
guili618 2020-03-13 20:13:59 +08:00
@jsisjs20130824 批判的好,😂😂😂
|
18
guokeke 2020-03-13 21:22:55 +08:00
讲道理,只要是个正常的产品项目就是一个越做越大的东西,一个开始上了 flask,后面大了,肯定后悔当初没上 django。
|
19
Akkuman 2020-03-13 21:40:03 +08:00 via Android
临时写个东西,或者自用小项目,flask 简平快
有考虑稍大的项目,还是 django,搭配 drf 也好用,drf 官方文档也写的不错,有些找不到的翻翻源代码也能知道,项目结构更好,可维护性更高 并不是说 flask 可维护性低,只是在代码周期拉得很长,或者说多人协同的时候,一个固定风格的框架对于维护和协同是很有利的,而 flask 在这种情况下想要梳理出更好的结构,前期需要花的功夫还是不少的 |
20
gsz2015 2020-03-13 21:54:53 +08:00
@Akkuman @jsisjs20130824 赞同,一个人维护公司项目,刚开始图快上了 flask,很方便。
但项目大起来了的时候,ORM、flask-restful、权限什么的都需要花大量事件去折腾(当然也学到了不少东西)。 建议: 如果是不复杂的小项目或者为了学 web 原理,上 flask 很方便,能学到很多底层的思想和原理。 但当业务上了体量之后,直接选 Django 更好,不需要过多的折腾。 |
21
bnm965321 2020-03-13 22:41:38 +08:00
django 的设计哲学叫做 opinionated,他们觉得提供给你的方法就是最好的,对于选择困难症 /完美主义者都是福音。
所以 django 的 slogan 叫做: The Web framework for perfectionists with deadlines 关于 opinionated: https://developer.mozilla.org/en-US/docs/Learn/Server-side/Django/Introduction |
22
bnm965321 2020-03-13 22:43:28 +08:00
MDN 的这个 Django 教程我觉得起到了不小的宣传效果。
|
23
Aether 2020-03-13 23:27:22 +08:00
套用一句话来说,绝大部分项目都没到比较两个框架哪个好的地步。
|
24
mimzy 2020-03-13 23:31:16 +08:00 via Android
差距越来越小我觉得还有一个原因,自从 Flask 创始人沉迷 Rust 以后 Flask 团队的开发最近已经不活跃了,反观 Django 3 的路线图里要做的工作和时间节点还是很清晰的。
|
25
james122333 2020-03-14 00:13:58 +08:00
大而全 小而精之争?
不用争了 大而全如果够好 里面的组件也就会是小而精 之所以没显现问题只是因为需求面窄 一有状况马上就经不起考验了 社会的进步什么时候不讲精致度了? 一味追求大而全里面组件乱七八糟当然是没什么用的 |
26
johnsona 2020-03-14 23:19:53 +08:00 via iPhone
@gsz2015 flask 用来学 web 开发是一个什么流程就好了。一个权限设计功能,flask 堆积木一样堆装饰器。Ddrf 得做法更优雅。Django 有不少开源商业项目。flask ?没听说过。。开玩笑,有的。宝塔面板还有一个调度工具忘了名字了
|
27
noparking188 2020-03-15 21:56:25 +08:00
Django 省事
|
28
johnsona 2020-04-16 15:31:03 +08:00
时隔多日,再来批判 flask,最近一个功能是根据配置文件在文件系统和 oss 对象存储系统之间切换,flask:什么 storage ? django:django.core.file.storage,flask:没听说过,好像有一些第三方库,除了十几个赞,7-8 年前最后提交也没什么嘛。django:操,受不了
|
29
johnsona 2020-04-16 19:35:25 +08:00
再来批判,flask 没有阿里云 oss 的扩展包,django 有,django 再得一分
|
30
johnsona 2020-08-06 15:26:44 +08:00
再来批判,django 可以在配置文件安装其他 app,flask?我看到有人自己造了一个,还有什么解决办法? distributewsgi?tui
|