python的WEB框架django和fastapi

之前先学了django,感觉挺好挺方便,确实有点笨重。就想来试试fastapi,怎么这么别扭,依赖注入看起来很强大,可用起来不方便。ORM还要从路径函数引入session,再一层层传递到数据库方法,一点也不python。也没有中间件自动鉴权。回头看看django真方便,这些都帮你自动完成了

6 个赞

:tieba_087: flask呢

没去尝试,感觉有点不上不下;开箱即用肯定django,短小精悍fastapi

有没有一种可能,是你选择用的ORM框架就是这么使用的。

像Django那样隐式处理数据库连接的库也有,比如Tortoise ORM。

至于Django和类Flask框架的设计思路本来就不一样,这里不多展开了。

Python web能跑就行了,真要做直接选spring生态不更好吗

请问下佬,我看引入数据库连接有两种方式:一个就是fastAPI教程里的写法,从路由函数通过依赖项引入session,然后一层层传递到数据库操作函数;另一种是网上也有直接在数据库操作函数中引入SessionLocal()这个数据库连接实例;
这两种有什么区别?

自学者比较纠结,总想选一个“好”的学

开一个简单的接口用哪个库比较好

fastapi

1 个赞

非FastAPI用户,只是使用过SQLAlchemy一段时间。但从现代Web应用程序理解,本质上都是从一个数据库连接池中取出一个空闲的连接,要么显示将连接传递给Model使用,要么Model通过context隐式获取连接。

两种写法功能上没有区别,只是在工程上的组织和可维护性方面的差异。

感谢回复,我刚学sqlalchemy。我试着问了下Copilot(感谢免费),他说用直接用sessionLocal需要自己关闭连接。而通过依赖注入会自动关闭。
但我也觉得依赖注入太烦了,我需要在一些中间函数中都多引入这个参数,只是为了传递给下一层

那你适合用Django-ninja,多个优点集于一身

我去翻了翻Django-ninja,确实如此啊。在django的基础上引入 [Pydantic] 和 [异步支持],兼顾了fastapi的速度。开发动机里这个写的就是我现在的困惑:

  1. 当你在操作中依赖认证和数据库会话时(对于某些项目,这大约占所有操作的 99%),带有参数的依赖注入会使你的代码过于冗长。

就是看起来更小众了,会不会有很多坑啊

flask无敌的,又轻又全:yum: