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

2018-03-30 11:43:10 +08:00
 1500176279
如题,花了一段时间学习基础语法,以及一些相关知识,现在想用更上一层楼!
10488 次点击
所在节点    Python
56 条回复
ipwx
2018-03-30 15:09:00 +08:00
@SlipStupig Tornado 性能确实不错,但是建立在你本身 Python 已经很厉害的基础上。如果是新手,还是老老实实用 Flask 或者 Django 吧。
welkinzh
2018-03-30 15:36:28 +08:00
flask 入门很快, 接下来可以 django,其实主流也就这两个了
vimiix
2018-03-30 15:39:29 +08:00
@Hopetree 你知道的有点多
rogwan
2018-03-30 16:10:01 +08:00
@lauix 优化算上 uwsgi/gunicorn 吗?还是优化 flask 本身模块(除了把阻塞任务用 thread 或队列之外,还没怎么优化过其他功能啦)?
lauix
2018-03-30 16:20:12 +08:00
@rogwan

gunicorn 启动是必须的

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

celery + redis 作为异步队列

基本就搞定了

本身模块看需求了
baojiwei
2018-03-30 16:44:27 +08:00
2020 就不支持 python2 了,为什么不果断的坐上 python3 的船。当然是 sanic。
wongskay
2018-03-30 16:53:20 +08:00
flask
YingJie
2018-03-30 17:10:32 +08:00
没有用 bottle 的吗
l1093178
2018-03-30 17:14:37 +08:00
新手用 Django,文档很详细,各种 web 开发的坑和最佳实践也写得很清楚了,照着做基本上不会有问题
一上来就用 Flask 的真的不怕被坑?
mywaiting
2018-03-30 17:14:41 +08:00
感觉 python 的框架都是哲学问题,没有对错,找个框架入门好了~

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

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

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

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

上面那些提及到性能的同学,完全没有必要进行对比。在 pypy/aiohttp/uvloop 的加持下,不是我非要针对谁,你们说的性能都是垃圾。
mywaiting
2018-03-30 17:19:59 +08:00
关于性能,补充一点:

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

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

PHP 才是世界上最好的语言!
rogwan
2018-03-30 17:24:03 +08:00
@mywaiting flask 的 context 确实有点魔术方法,django 里不是也有 CONTEXT_PROCESSORS,是类似的吗?
sciooga
2018-03-30 18:29:46 +08:00
Tornado 省心很多啊
bucky
2018-03-30 18:51:56 +08:00
不推荐 flask 入门,入门重要的是要有一个蓝图,flask 是对后台开发蓝图清楚的人用的,推荐 django, 学了 django 然后又需要可以翻过来学 flask
mywaiting
2018-03-30 22:10:09 +08:00
@rogwan #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 好理解~
hellolex
2018-03-30 22:40:05 +08:00
@YingJie 用 bottle 写过一个应用后端,非常喜欢这个框架,小巧方便
wzw
2018-03-30 23:39:28 +08:00
@bucky #34 蓝图好用
simpleapples
2018-03-30 23:52:45 +08:00
我用 flask 做过一些项目,觉得 flask 的设计是非常精妙的,既可以用来做小项目,也可以使用蓝图,引入各种扩展来用来做大项目。从代码角度来说,也适合由浅入深的学习,可以通过它了解“什么是一个 web 框架”,也可以深入到源码中,理解其 context 的设计原理。

既然楼主是新手,建议随便找一个框架( django、flask、tornado )深入理解,然后再对比着学习另外两种,选择上不用太纠结,反正都不了解,那就随便找一个了解好了。
ihuzhou
2018-03-31 00:01:56 +08:00
最近有个任务就折腾了下 flask 和 django,个人体会 django 比 flask 稍微好一点,flask 精简,django 全面直接有登录后台权限系统,用起来十分方便。
xpresslink
2018-03-31 00:31:50 +08:00
@YingJie 这个以前还真用过写一些运维小工具接口什么的。本质上 flask 就是从 bottle fork 出来的那个装饰器路由方式完全一样。就是因为 flask 作者当年想让 bottle 作者加功能,但是 bottle 作者就是想保持一个文件的框架不同意改,于另起炉子了。不信你拿 bottle 那个 hello world 用 flask 来跑都不用改。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/442789

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX