Python web 几大框架哪种适合新手?dalao 来发表下自己的高见

如题,花了一段时间学习基础语法,以及一些相关知识,现在想用更上一层楼!
Python web 几大框架哪种适合新手?dalao 来发表下自己的高见

57 回复

flask 知名度高的前提下 使用更简单


对于新手入门Python Web开发,我首推Flask。

Flask是一个轻量级的“微框架”,核心简单但扩展性强。它没有内置数据库抽象层、表单验证等“全家桶”功能,这意味着你起步时概念更少,能更清晰地理解Web请求(request)、响应(response)、路由(route)这些基础概念。你需要什么功能(比如数据库操作ORM、用户认证),再通过安装相应的扩展(如Flask-SQLAlchemy, Flask-Login)来添加,这种“按需组装”的方式让学习路径非常平滑,不会一开始就被复杂的配置和概念淹没。

相比之下,Django功能大而全,开箱即用,但学习曲线陡峭,它强制你使用自己的项目结构、ORM和模板引擎,新手容易“知其然不知其所以然”。FastAPI虽然现代且性能高,但其深度依赖异步编程(async/await)和Pydantic数据验证等概念,对纯新手来说可能有点“超纲”。

所以,新手用Flask能快速搭建起第一个Web应用,获得正反馈,理解底层原理后,再根据需求转向Django(需要快速构建复杂、标准的管理类应用)或FastAPI(需要高性能API)会更容易。

总结:新手无脑选Flask就对了。

flask 呗,简单易用

flask 上手快一些

flask 或 django

看你的需求和你本身对 python 语言基础。
如果你的 python 语言基础也是小白又想马上撸出来点东西,主要是以内容展示为主的项目,那么选 Django。
如果你的 pthon 基础不错,想做某种服务后端,以 api 为主,需要比较大的灵活度,那么选 flask

以为有很多框架可选,其实也就 flask 和 django。其他的要么太老,要么太新,要么太小,要么太大。

flask,用来做小项目真的很爽

难道不是 tornado,性能好,轻量化,我从 3.0 用到现在 5.0…

非常方便,文档齐全,更新迅速,大型开发也不成问题.
详情见官方文档: http://www.tornadoweb.org/en/stable/

入门 flask->进阶 django->高手 flask

flask 就是 Dota 里的 SF,农药里的妲己 ,😄

flask 微框架,
django 大而全的框架,
sanic 性能好,
初学者前两个随便选一个就行,另外 tornado 的时代已经过去了。

我觉得 tornado 的异步网络框架是很强大,非常适合做高并发应用后端。做 web 框架就有点功能上不完善了,特别是异步回调模式不是一般小白能很快上手写代码的,老手都头疼,要是我宁愿用 gevent。

flask 优化后,比 tornado 并发更高。

flask 文档好容易上手。
tornado 不错但是缺少一些常用的辅助功能。
不过现在毕竟是前后端分离的时代了,不要模板的话像是 apistar 这种框架也不妨看看。
另外我以前是 tornado 老用户了,造了一个轮子: https://github.com/fy0/fpage


#16 异步使用 python3

flask 确实很方便,我也刚弄 Python,就用的 flask,易学,简单,文档也 OK

草丛婊???

Tornado 性能确实不错,但是建立在你本身 Python 已经很厉害的基础上。如果是新手,还是老老实实用 Flask 或者 Django 吧。

flask 入门很快, 接下来可以 django,其实主流也就这两个了

你知道的有点多

优化算上 uwsgi/gunicorn 吗?还是优化 flask 本身模块(除了把阻塞任务用 thread 或队列之外,还没怎么优化过其他功能啦)?



gunicorn 启动是必须的

主要还是 gevent + flask 变成协程 ( 加上 gevent 不比 tornado 差,最重要的是不用写 yeid )

celery + redis 作为异步队列

基本就搞定了

本身模块看需求了

2020 就不支持 python2 了,为什么不果断的坐上 python3 的船。当然是 sanic。

没有用 bottle 的吗

新手用 Django,文档很详细,各种 web 开发的坑和最佳实践也写得很清楚了,照着做基本上不会有问题
一上来就用 Flask 的真的不怕被坑?

感觉 python 的框架都是哲学问题,没有对错,找个框架入门好了~

flask 上手快,插件多,但是随着项目的深入,慢慢就是变成一个 django,绝对的
django 一上来就是大而全,但胜在什么都有,什么都不用自己折腾

tornado 这货从一出生就开始用到现在,没有啥好也没啥不好,就是用习惯了。flask 的上手快是以各种插件为代价的,模板你要去找 jinja 吧? orm 要找 sqlachemy 吧?这些都需要你自己去熟悉一下

而且,各种用 flask 和 django 的同学可能忽略了一个基本是事实就是,如果你有工作需要深入到源代码的话,那么 tornado 是一个极好的参考。django 的代码体系复杂而且庞大我就不说了,看 flask 的代码底层还要考虑 Werkzeug,其基于全局变量的 context 处理起来其实也不容易的。

顺便的,部署 tornado 的项目可以少拖一个 gunicorn 或者 uwsgi 之如此类,少很多坑

上面那些提及到性能的同学,完全没有必要进行对比。在 pypy/aiohttp/uvloop 的加持下,不是我非要针对谁,你们说的性能都是垃圾。

关于性能,补充一点:

在 pypy/asyncio/uvloop 的加持下,不是我针对谁,包括你们认为的 NodeJS、GoLang、Gevent 啥的,都是垃圾

有感觉我会被 NodeJS\GoLang 的同学过来喷死,就不说了~

PHP 才是世界上最好的语言!

flask 的 context 确实有点魔术方法,django 里不是也有 CONTEXT_PROCESSORS,是类似的吗?

Tornado 省心很多啊

不推荐 flask 入门,入门重要的是要有一个蓝图,flask 是对后台开发蓝图清楚的人用的,推荐 django, 学了 django 然后又需要可以翻过来学 flask

#32 django 的 context_processors 只是 template 的全局变量吧,跟 flask 不是一个概念的 context

flask 的 context 分为 App context (_app_ctx_stack) 和 Request context (_request_ctx_stack),理解好这两个概念就是 flask 的关键。flask 基于 werkzeug 的 LocalStack 实现了很精巧的 应用(app) 和 请求(request) 的 context,像 flask g 这样的全局变量好用是好用,要是你想问个为什么,恐怕没有几个自认为懂得 flask 的人答得出来

因为懂得 flask 背后的原理,我反而觉得 tornado 这样的用 class 来构建 context 的框架更加方便理解,至少跟别人解释起来,真心比 flask 这背后的 LocalProxy 好理解~

用 bottle 写过一个应用后端,非常喜欢这个框架,小巧方便

#34 蓝图好用

我用 flask 做过一些项目,觉得 flask 的设计是非常精妙的,既可以用来做小项目,也可以使用蓝图,引入各种扩展来用来做大项目。从代码角度来说,也适合由浅入深的学习,可以通过它了解“什么是一个 web 框架”,也可以深入到源码中,理解其 context 的设计原理。

既然楼主是新手,建议随便找一个框架( django、flask、tornado )深入理解,然后再对比着学习另外两种,选择上不用太纠结,反正都不了解,那就随便找一个了解好了。

最近有个任务就折腾了下 flask 和 django,个人体会 django 比 flask 稍微好一点,flask 精简,django 全面直接有登录后台权限系统,用起来十分方便。

这个以前还真用过写一些运维小工具接口什么的。本质上 flask 就是从 bottle fork 出来的那个装饰器路由方式完全一样。就是因为 flask 作者当年想让 bottle 作者加功能,但是 bottle 作者就是想保持一个文件的框架不同意改,于另起炉子了。不信你拿 bottle 那个 hello world 用 flask 来跑都不用改。

明白,就是说 django 大包大揽,自产自销,用不着 App context 这样的可拔插设计(把 flask 的 app.app_context().push()理解成可拔插设计),可以这样理解吗?

django 适合新手,成熟方便
flask 有一定经验的,灵活易用
tornado 适合看代码学习……写的很赞

推荐 bottle。麻雀虽小五脏俱全,不用折腾插件~

学会 bottle 再转 flask 也不迟

必须是 Flask 写接口真的是杠杆的

一直在用 bottle+gevent

对于只提供 api 而言 flask 也很重

如果你有其他语言成熟 web 框架经验的话,推荐 flask,否则请使用 django,我已经看过太多新手用 flask 入手,然后写出来的项目代码结构不堪入目的…

前段时间临时搞一个 web 项目,简单学了下,用的 nginx+gunicorn+gevent+flask+celery,感觉挺好用,一天就上手。。

哥们,眼熟你,你的 id 事名字缩写吗,我的是 fyx…哈哈哈哈

#48 没错 2333

flask 不错,推荐个 flask 入门的教程:

http://xc.hubwiz.com/course/562427361bc20c980538e26f?affid=20180331v2ex

有人用 aiohttp 嘛

作为一个新手,学了 3 个月 python,然后自己看视频和看资料学习 django
然后现在在刚刚入职一个月,在做 flask。。。。。

求问您主要掌握了什么 python 知识,您是计算机专业的吗,应届生还是社招?很想知道能入职大概的要求是怎么样的。希望能传授一些经验

月经贴

Bottle
是也乎 ╮(╯▽╰)╭

不解释…

不好意思,之前你的回复刚好在我的消息通知下一页,没注意到
我是通信毕业的,毕业后加入了一家比较大的公司做网络运维,觉得不适合自己,在上班空余的时候就自学,入职不到半年就辞职了,在职期间零零散散学了 2,3 个月 python,然后辞职后,自己学习了 django 二个月,就硬着头皮去面试了。
大概就掌握了 mysql,计算机网络,还有一些 web 知识和 python 知识,当然还有大学的一些基本的编程基础,其实,觉得找份工作不会很难,主要是好与不好,如果没有很多的资本,我觉得就不要太挑剔公司,为了入个门最重要~

回到顶部