1
wellsc 2021-08-23 16:10:39 +08:00
2021 年了
|
2
tinytoadd 2021-08-23 16:12:46 +08:00 via Android
使用过一次后,就再也没用过了
|
3
ytmsdy 2021-08-23 16:18:26 +08:00 13
动态语言好比一辆 F1 赛车,一脚油门一踩就往前走,但是相应的如果技术不过硬,过弯和减速的时候容易出问题。
老司机们都觉得非常香。 新司机觉得这什么破车,居然不带 ABS,还没有倒挡! |
4
chenqh 2021-08-23 16:18:45 +08:00
感觉还好吧, 手动注册还行吧, 手动注册好理解.
|
5
chenqh 2021-08-23 16:20:15 +08:00 1
关键 web 一般而言操作比较简单吧,一般的 crud, 基本不需要定义中间类,导致要了解的额外内容较少, 比较简单
|
6
chenqh 2021-08-23 16:21:23 +08:00
顺便说一局,我用的 tornado, flask 要用 gevent, 我菜我把握不了
|
7
Mohanson 2021-08-23 16:23:13 +08:00 1
关于我是如何评价 py 这门语言的: 看我头像
|
8
alexkkaa 2021-08-23 16:23:43 +08:00 via Android 1
flask 就是用来写 hello world 的 用来写项目最后会改的不牛不马的。Django 是比较完善的
|
9
sickoo 2021-08-23 16:25:01 +08:00
推荐 fastapi,高性能异步框架,如果还不行请 fast 自己
|
10
xmt328 2021-08-23 16:26:58 +08:00 4
@ytmsdy 然后项目经理说这个项目你帮客户把乡下老母亲接过来,别人拖拉机 1 个小时就能来回,你 F1 的赛车手半个小时应该足够了吧
|
11
steptodream 2021-08-23 16:41:57 +08:00
合适的工具干合适的事
|
12
jakehu 2021-08-23 16:42:06 +08:00
sanic 还不错
|
13
so1n 2021-08-23 16:43:21 +08:00
类型这个可以用 type hint
|
14
so1n 2021-08-23 16:44:58 +08:00
@sickoo fastapi 是基于 starlette, 性能全靠自己的虚假宣传, 还不如 starlette. 宣传的性能是基于 uvicorn+uvloop+ojson+h11
|
17
Vegetable 2021-08-23 16:49:28 +08:00
Django yyds
|
18
ila 2021-08-23 16:52:03 +08:00
又不是不能用。。。
其实你写多了,积累多了,自定义 model 基类和中间件,能够解决很多问题。 |
21
danc 2021-08-23 16:56:24 +08:00
写惯了静态类型的,这种动态类型的我是真的 hold 不住了🤣。一开始写的时候其实还好,后面过了一段时间要改的话,尤其是范围稍微大一点,直接火葬场
|
22
youngce 2021-08-23 17:00:30 +08:00
既然这么不喜欢 flask 的简陋,为啥不选 django 呢。
ps:fastapi 不是比 flask 生态更差?不知道为什么这么多推荐的 |
24
Latin 2021-08-23 17:02:03 +08:00
题主的目标就是引战么?
|
25
lgpqdwjh 2021-08-23 17:41:20 +08:00
首先这是一个引战帖
然后我想说,flask 和 fastapi 压根就不是一类东西, 没有可比性 至于你觉得 flask 写后端很难用, 大概率是你自己的问题 |
26
kaka6 2021-08-23 17:50:23 +08:00
flask 写后端挺好用的,简单便捷,好扩展
|
27
SjwNo1 2021-08-23 18:25:57 +08:00
求求你用 java 吧
|
28
roundgis 2021-08-23 18:29:15 +08:00 via Android
找一個好點的 ide
例如 pycharm 日子會好過些 |
29
est 2021-08-23 18:30:53 +08:00
flask 本来就很难用。就是一个写 hello world 的脚手架
|
30
CicadaLewis 2021-08-23 18:32:50 +08:00
type hint 了解一下
|
31
lesismal 2021-08-23 18:34:41 +08:00
golang,你值得拥有
|
32
leonme 2021-08-23 18:43:52 +08:00 via iPhone
python 本身就很拉跨,和 flask 无关
|
33
fatbear 2021-08-23 19:02:35 +08:00 2
楼主吐槽主要集中在两点,一个是动态类型的问题,这不是 flask 的问题,是 python 的问题,现在 python3 有了类型注解,和 ide 集成的也很好,并不存在没有提示等问题。 第二,楼主一直觉得 sqlalchemy 难用,flask 比 django 就好用在每个组件都可以自由替换,你可以选择 peewee,序列为 json 只需要一句 query.dicts()。
很多人去用其他语言的 xx 框架难用其实就是先入为主了,用其他语言的思想去看待另一门语言,python 的优势就在于快速开发,快速迭代,如果作为内部工具的后端服务,这两个优势是其他语言无可比拟的 |
34
Kilerd 2021-08-23 19:15:24 +08:00 via iPhone 2
哪哪都能看到说 flask 和 fastapi 不是同一个东西的人,别人明明就想用 python 写个 API 。然后你就给讲到了什么封装,什么架构能力不对称。哎
|
35
loading 2021-08-23 19:19:57 +08:00
flask 基本就是用来学 hello world 的,复杂应用超级麻烦。
|
36
letking 2021-08-23 19:28:34 +08:00
楼主引战有一手,学习了。
|
38
yohole 2021-08-23 23:12:49 +08:00
我一个写了多年 java 的人,用 python 写 web 就真的很别扭,不管用 python 什么框架都一样,直到用上 PyCharm 才好过了一点点,python 的特点就是写那些几十行最多几百行的工具时候,非常爽和快
|
39
RockShake 2021-08-24 08:39:23 +08:00
目前也就 Django 无论文档还是生态完整
|
40
ospider 2021-08-24 09:21:52 +08:00
我就不知道 flask 社区对 fastapi 咋就这么大的敌意?看来是真的戳到痛处了? FastAPI 人家大大方方的在主页写着基于 starlette 和 pydantic,咋就让你们你说的好像是偷源码一样了?人家 starlette 开源不就是为了让别人复用么?
楼主说的这几点,FastAPI 可以解决不少,建议尝试一下: 1. FastAPI 基于 Pydantic,强制你把参数都加上 type hint,一定程度上缓解了动态类型的问题。 2. FastAPI 中使用 Pydantic 定义参数,SQLAlchemy 定义数据库模型,个人使用下来感觉还是比较顺畅的。出参入参和模型中的字段还是有差异的,区别开有意义。不过 Pydantic 有 ORM mode,也可以直接读取 SQLAlchemy model 。 3. FastAPI 有强大的依赖注入系统,像是登录这种操作,直接写个几行的依赖就好了。社区有 fastapi_user/login 这种插件,但是我觉得是脱裤子放屁。官方文档就有详尽的实现 oauth2 的教程。 4. SQLAlchemy 的类型提示有时候真是无解……太动态了。 5. FastAPI 也是全局一个 app/router,然后其他的 router 注册上去。。不过最后在自动生成的 swagger 文档里是统一的 总之,如果尝试写前后端分离的 SPA 的话,建议试一下 FastAPI,毕竟刚用起来的 Flask 非常像,学习成本很低。 |
41
qW7bo2FbzbC0 2021-08-24 10:33:33 +08:00
写 helloworld 的话,试试 bottle.py ?
|
42
wangyzj 2021-08-24 10:34:13 +08:00
怎么说的
python 什么都能干 但有些工作有更好的选择 比如写 web flask,django 各自有各自的优点和缺点 虽然我更喜欢 flask,django 太臃肿 但是做一个对性能要求不高的能用的需要团队协作的东西的话,django 是真的成熟完善 |
43
qq976739120 2021-08-24 11:04:32 +08:00
flask 就是给老司机或者创业公司快速启动用的,提供个简单封装就够了.新手还是学学 spring 之类的比较好
|
44
vanwtf 2021-08-24 11:10:40 +08:00
前期写一些管理系统的项目都是 django 一把搓,flask 写的项目大了就感觉用起来麻烦了,写点小接口还好,django yyds
|
45
stach 2021-08-24 11:12:23 +08:00
楼主的焦点更多的是 python 是一门 `动态` 语言, 如果要解决这个问题, 考虑 `静态` 语言会更好, 比如 Go 就很不错.
另外, Flask 写后端是体验是非常好的, 觉得复杂的话, 可以不用 sqlalchemy, 直接用 PyMysql. 我个人使用 Flask 本身的组件就很少, 主要是冲着 Python 这个语言优势去的, 再配上 gevent, 性能也够用. 写过的业务也非常复杂, 可读性非常好, 如果用 Go 写就差一点了. 个人认为, Flask 的优势在于它简单, 其实, 你可以改造成你想要的样子, 你习惯的姿势, 而改造没有啥成本. 我可以像写 Go 后端 connection-per-goroutine 这样写 Python 后端 connection-per-gevent. 这个 Tornado, Django 对于我个人而言就是难用. 人生苦短, Python 真的不错, Flask 只是个工具. |
47
Mark24 2021-08-24 11:49:01 +08:00
楼主没有领会动态语言的精髓。
|
48
SystemLight OP @yohole 没错小型的项目用起来非常爽,快速开发,但是项目复杂度一旦上来,自己写着写着都忘记这个变量什么类型的了,虽然有 typing 辅助,但是有些库太魔法了,导致类型都无法提示出来了。
|
49
SystemLight OP @SjwNo1 正在学习 spring 全家桶,从 tornado 到 flask,到现在不想用 python 都是泪,哈哈
|
50
SystemLight OP @ospider 听起来不错,可以尝试,SQLAlchemy 动态的简直了,.半天出不来提示,太不友好了
|
51
jiayong2793 2021-08-24 13:59:18 +08:00
@ytmsdy 你这个比如反了吧,动态语言数据没定义类型就拿来用,写完之后连自己都不知道是什么类型的
|
52
meiyoumingzi6 2021-08-24 20:33:43 +08:00
别的还好, 就是觉得 current_app 非常蛋疼, 我只想在非请求周期内用个 setting
|
53
lanlanye 2021-08-24 22:47:58 +08:00
最近写服务用 Golang,写业务用 Django,爽的一批
|
54
molika 2021-08-25 09:38:59 +08:00
别的不说 就说第一点 “自我感觉 python 越用越难用,动态类型提示极其的不友好” 自己写代码不随手 type hint 然后推导不出类型。。。怪 python 喽
|
55
SystemLight OP @molika 用一下 sqlalchemy 就知道了,第三库内置的实现非常动态,导致无法提示
|
56
molika 2021-08-26 00:11:29 +08:00 via iPhone
@SystemLight 合适的 orm 的确难找 自己 hack 写方法包 加泛型 能推出来 我都这么干 但是没办法
|
57
allisone 2021-08-26 10:14:25 +08:00
用 django 一把梭
|
59
flniu 2021-08-26 11:03:26 +08:00
我们的经验是:强制加类型提示,用 mypy 做类型检查(可以加到 pre-commit 或 /和 CI )。
另外也在用 black 做代码格式化,用 pylint 或 flake8 做风格检查。 这样综合起来,代码的可维护性会好很多。 |
61
williamZXS 2021-08-26 21:20:10 +08:00
@yohole 确实,我是先写的 python,后来才写 java,觉得 python 写个脚本很顺手,用来写项目会比较乱
|
62
l4ever 2021-08-28 15:58:51 +08:00 1
看到了这个`flask 集成 sqlalchemy 想要返回 JSON 返回内容还需要通过 marshmallow 等把 python 对象转换`
我给你个方案 https://paste.ubuntu.org.cn/4544492 |
63
molika 2021-09-01 16:38:05 +08:00
@xmt328 typehint 可能是某些特殊场景或者人的需求 我目前不太需要这个
可能后面需要考虑这方面了 会迁移过去 (我自己一个人的项目 hold 住 而且 hack 三方库也很方便 |
64
tisswb 2021-09-02 17:06:31 +08:00
sqlalchemy 很强大,我一般都是用 pony orm
|
65
wuwukai007 2021-09-02 17:10:12 +08:00
flask create_all 建表还要先手动导入模型类,一个项目几百张表,很离谱!
|
66
SystemLight OP @wuwukai007 有 flask-sqlacodegen 可以反向生成模型
|