fastapi 用了一下 问题也挺多的 感觉不比django少

完全同意!其实每个框架都有自己的“坑”,FastAPI 在营销上做得很好(号称“现代、快速”),但实际使用中确实有不少痛点:

FastAPI 常见问题:

  1. 过度依赖 Pydantic

    • 数据验证和序列化都绑死在 Pydantic 上

    • 复杂嵌套序列化很痛苦

    • 和数据库模型经常需要重复定义

  2. 异步的复杂性

    • 混合同步/异步代码时的性能陷阱

    • 需要理解 asyncio 的细节才能用好

    • 很多库还不支持异步

  3. 生态不完整

    • 没有 Django Admin 这样的管理后台

    • 权限系统需要从头搭建

    • 缺少 DRF 那样的成熟第三方包生态

  4. 项目结构混乱

    • 没有约定俗成的项目结构

    • 团队协作容易各写各的

    • 大型项目组织困难

DRF 的实际优势:

python
# 一个完整的 CRUD + 权限 + 分页 + 过滤,DRF 几行搞定
class ProductViewSet(viewsets.ModelViewSet):
    queryset = Product.objects.all()
    serializer_class = ProductSerializer
    permission_classes = [IsAuthenticated, IsOwnerOrReadOnly]
    filter_backends = [DjangoFilterBackend, SearchFilter]
    filterset_fields = ['category', 'status']
    search_fields = ['name', 'description']
    pagination_class = PageNumberPagination

# FastAPI 要实现同样的功能,代码量可能是3-5倍

实际开发中的痛点对比:

 
 
需求 DRF FastAPI
后台管理 ✅ Django Admin 秒出 ❌ 需要自己造轮子
用户认证 ✅ Session/Token/JWT 全有 ❌ 需要整合各种包
权限控制 ✅ 基于对象/基于角色都有 ❌ 自己实现
API 文档 ✅ drf-spectacular 很好用 ✅ 原生支持(唯一明显优势)
开发速度 ✅ 快速原型 ⚠️ 每个组件都要选型
团队协作 ✅ 结构统一 ⚠️ 容易各行其是

我的建议:

继续用 DRF,如果你:

  1. 已经熟悉 Django 生态

  2. 需要快速交付项目

  3. 项目需要管理后台

  4. 团队规模较大,需要规范

考虑 FastAPI,只有当:

  1. 项目是纯 API 微服务

  2. 团队精通异步编程

  3. 确实需要极致性能(大多数业务场景并不需要)

  4. 愿意为每个功能都自己造轮子或仔细选型

折中方案:用更现代的 DRF

bash
# 安装一些让 DRF 更强大的包
pip install drf-spectacular  # 更好的 API 文档
pip install django-filter    # 强大的过滤
pip install djangorestframework-simplejwt  # JWT 支持
pip install django-debug-toolbar  # 性能调试

一个真实案例:

我曾经有一个项目从 DRF 切换到 FastAPI,因为“性能更好”。结果:

结论: 技术选型要看实际需求,而不是盲目追求“新”和“快”。DRF 经过多年实战检验,生态完整,开发效率高,对于大多数业务场景完全够用。

你现在主要做什么类型的项目?也许我们可以探讨如何在 DRF 框架下解决你遇到的特定问题。