1
Outliver0 2021-11-03 11:24:14 +08:00
网站挂了吗,我访问不了
|
2
janxin 2021-11-03 11:27:08 +08:00
直接怼在 DB 上么...
|
5
loading 2021-11-03 11:49:06 +08:00
这和 orm 区别有多少,没看出来。
|
6
qionnian 2021-11-03 12:05:35 +08:00
要 python3.10 啊
|
7
HashV2 2021-11-03 12:20:31 +08:00
请问和 flask 、django 、tornado 这些 python web 框架相比优势在哪, 是性能更强还是更易用啊?
|
8
cheunghy OP @HashV2 区别就是一周工作量变成 2 小时。django 是类似 ror 的传统框架,代替以前的 php 和 java 的,现在看架构已经过时了。flask 和 fastapi 是 jsonclasses 可以选择使用的。 @jsonclass 就有比 pydantic 更完善的功能,@pymongo 就能获得 SQLAlchemy ORM 一样的功能,再 @api ,就拥有 CRUD ,支持各式关联查询。再 @authorized ,就可以直接获得登录功能,不需要写登录了。功能都是可选的,没有底层访问限制。
|
10
feiandxs 2021-11-03 14:23:48 +08:00
好奇怪的用法。
这套东西我自己倒也有几个类似的,毕竟写几年业务下来谁都手头有一些封装,我也大量写 web 服务端,所以很多场景需求其实就那几个,我有好几种封装, 其中有一些也是用声明式的写法的。 我大概看了下你的文档,虽然不全,起码看起来挺专业,比很多项目要好太多。 但这个东西本身总给我一个奇怪的感觉,它很像一个扩展了的 orm 。 对我而言,这种东西更适合作为一个放在自己项目 \utils\ 下的一个工具,而不适合作为组织引导项目的框架。 |
11
sudoy 2021-11-03 14:25:21 +08:00
支持一下,不过我个人还是习惯 flask 或者 django 这种服务端渲染的
|
12
crazypig14 2021-11-03 14:51:42 +08:00
文档里没找到做 authorized 的地方,
目前看最核心的地方好像就是 embeded 和 linked ,但这两个在 presenting/persistence/query 中的行为似乎文档不是很清楚,感觉需要自己踩坑, 支持一下,楼主加油 |
13
ospider 2021-11-03 14:54:08 +08:00
官网的代码配色改一下吧,你这个重点在装饰器,配色里装饰器确实灰色的。。
|
15
cheunghy OP @crazypig14 谢谢认真阅读文档。
authorized 在 Guide 中的最后一个里面。 linked 那些,我刚检查了下,确实除了 API 文档中,Guide 中缺少相关内容。目前其他一些方面也会存在些缺少文档的情况,我们会整理总结,在新版本中把文档补充到位。 |
16
wliansheng 2021-11-03 15:02:16 +08:00
写法很简洁,看了一遍文档,取代视图层面的代码好像没看到在哪,感觉适合一些快速小一点的项目
|
17
triangle111 2021-11-03 15:08:10 +08:00
支持一下,看样子确实省事很多,不过后端也需要校验前端传递过来的数据,这样还是避免不了一些业务函数的开发。
|
18
learningman 2021-11-03 15:10:50 +08:00
这种声明式开发,写的时候没补全会难受死的。。。
|
19
pengtdyd 2021-11-03 15:21:35 +08:00
说一个不是劝告的劝告,python 搞 web 是一个错误的方向,再努力都没用
|
20
lanlanye 2021-11-03 15:22:24 +08:00
大概看了一下,请问这个和 DRF 的 ModelViewSet 相比有什么优势?
|
21
cheunghy OP @triangle111 types.validate(types...) 管道校验呀,很多操作都有 API 的。
像我们自己用的 types.str.securepw.length(8,16),这就是校验密码的方式。 |
22
cheunghy OP @learningman vscode 加 Pylance ,补全是完整的呀。
|
23
cheunghy OP @wliansheng 视图是没有的,前后端分离的。
|
24
cheunghy OP @lanlanye 是这个吗 https://www.django-rest-framework.org/api-guide/viewsets/
刚看了下,这个要写 viewcontroller ,太多胶水代码了。 |
25
lanlanye 2021-11-03 15:56:53 +08:00
@cheunghy 是这个,在 Django 中定义好模型后只需要几行代码就可以创建一个 CRUD 的接口,同样几行可以添加简单的筛选搜索排序等定制功能,做数据接口的话并不需要写多少东西。
|
26
cheunghy OP @lanlanye CRUD 和筛选搜索排序关联查询这些的话,用 JSONClasses 加五个字符:@api ,和一个换行符就可以了,并且可以嵌套多级查询。内在逻辑写在 types 管道中,又省下很多。
|
27
so1n 2021-11-03 16:33:22 +08:00
pydantic 的结合 orm 版本?
|
28
cheunghy OP @so1n 是的,一部分功能这样比喻是很形象的。
在这里大概做一个比较 pydantic 初始化既验证,而 jsonclasses 是初始化后,允许你自由操作,调用 validate 才验证。 pydantic 仅强调验证,缺少数据流转换。 pydantic 不支持 orm 一直很伤,这个需求其实也很迫切。 pydantic 与 fastapi 的集成,解决一些问题,但也带来很多不够灵活的问题。这种集成仍不能避免复制粘贴 CRUD ,写过多胶水。 pydantic 的验证写起来麻烦,需要 @validate 加函数,而 jsonclasses 中,你可以用 types 管道写验证,也可以插 lambda 或函数进入管道。 pydantic 没有 graph 功能,就是多对象关联和数据库中的多对象分表集体写入。 |
29
abersheeran 2021-11-03 16:55:31 +08:00
看了一下,开发一些 CRUD 的 API 服务确实不错,不过我没看到怎么定制化。假设我用你这个创建了一个 web application 了,我还想额外加一些处理器去其他 URL 的内容,怎么做?
|
30
cheunghy OP @abersheeran 没有限制功能的。app = create_fastapi_app()或 app = create_flask_app()之后,正常写 fastapi 或 flask 的 routes 就可以了。这种情况下,JSONClasses 全套 ORM 功能,以及核心包的 validate 等功能,都是可以使用的。相对于一些业务逻辑的话,比如说“领导批准”,其实可以通过 PATCH ( CRUD 中的 U )来实现,声明 types.onupdate(),触发关联的查询和其他的回调比如发出短信、发出邮件都可以的。
|
31
abersheeran 2021-11-03 17:25:36 +08:00
@cheunghy flask 或者 fastapi 好像都是没有给指定一批路由增加中间件的功能,你这个框架的鉴权之类的功能是怎么实现的?会不会影响到我自定义的处理器?
|
32
cheunghy OP @abersheeran 你可以把新的 middleware 加在获得的 app 对象后面。flask 和 fastapi 两者的集成在框架内部 session 的实现是不同的。可以配置跳过不用的。
|
33
sivacohan 2021-11-03 17:43:29 +08:00
楼主能描述一下创造这个框架时候,希望使用的场景吗?
我看完文档觉得对于文档存储类使用起来比较方便。 对统计类(类 ERP 、CRM )这类数据好像没有额外的加持,同时因为绑定了 mongo ,对事务类支持可能也有风险。 |
34
cheunghy OP @sivacohan
没有绑定 MongoDB ,只是还没支持 SQL 。支持 SQL 后,API 用法不变。 目前 ORM 功能是完整的,在 CRUD 方面,还没有思考统计图表等功能,如果是统计图表,需要手动写 routes 和 ORM 查询。会先收集统计图表的需求类型,以后会构思这方面的声明式写法。 事务的话,mongoDB 新版本有 transaction ,应该没什么问题吧。 |
35
demonlin 2021-11-04 00:05:28 +08:00
建议:
官网以及文档加入国际化 |
37
demonlin 2021-11-04 17:56:36 +08:00
@cheunghy 这个首先需要文档和官网的 github 仓库有集成国际化的方案,并且通过参与翻译的方式,而不是所有包含文字的文件都复制一份翻译,在集成后可选择如 https://www.transifex.com/home/ 的方式进行文案翻译
|
39
llsquaer 2021-11-13 17:54:13 +08:00
国内开源的通病,第一步国际化...才从知乎激烈讨论过来,所以一看就联想到了.莫怪
|