strawberry-django 是 Strawberry GraphQL 的 Django 集成扩展,可从 Django 模型自动生成 GraphQL 类型、查询与变更,并内置过滤、分页与查询优化能力。
- 0.93.0
- 发布于
- 18 天前
- 504
- 星标
- 24
- 下载
- 同步于
- 8 天前
最新版本
0.93.02026年10月10日 22:28下载慢?可在上方随时切换镜像源
项目说明
项目概述
strawberry-django 是 Strawberry GraphQL 框架的 Django 扩展,为 Django 项目提供完整的 GraphQL 接入方案。它能基于 Django 模型自动生成带类型安全的 GraphQL 类型、查询、变更与解析器,并内置过滤、排序、分页与权限体系。配合查询优化器可自动改写数据库查询,避免 N+1 问题。
| 项目 | 内容 |
|---|---|
| 语言 | Python |
| 基础框架 | Django、Strawberry |
| 类型 | GraphQL 集成扩展 |
| 许可 | MIT |
用类型注解把 Django 模型直接变成 GraphQL API,少写一半样板代码。
主要功能
- 自动类型生成:从 Django 模型生成 GraphQL 类型,全程类型安全
- 高级过滤:支持 contains、exact、in 等查找表达式的过滤体系
- 分页方案:内置 offset 与 Relay 游标两种分页
- 结果排序:按任意字段自动生成排序参数
- CRUD 变更:自动生成创建、更新、删除变更并带校验
- 查询优化:自动
select_related与prefetch_related,消除 N+1 查询 - 认证权限:接入 Django 认证体系,权限规则灵活可配
- 调试工具:集成 GraphiQL 与 Django Debug Toolbar 便于排查查询
适用人群
- Django 项目引入 GraphQL 的开发者
- 需要强类型 API 层的团队
- 从 Django REST 迁移或并存 GraphQL 的项目
- 关注查询性能的后端工程师
快速上手
- 安装扩展:
pip install strawberry-graphql-django - 用装饰器声明 GraphQL 类型
import strawberry_django
from strawberry import auto
from . import models
@strawberry_django.type(models.Fruit)
class Fruit:
id: auto
name: auto- 定义查询并启用优化器构建 schema
import strawberry
import strawberry_django
from strawberry_django.optimizer import DjangoOptimizerExtension
@strawberry.type
class Query:
fruits: list[Fruit] = strawberry_django.field()
schema = strawberry.Schema(query=Query, extensions=[DjangoOptimizerExtension])- 在
urls.py挂载视图:path('graphql/', AsyncGraphQLView.as_view(schema=schema)) - 访问
http://localhost:8000/graphql/在 GraphiQL 中调试
核心优势
- 样板代码少:模型到类型的映射自动完成,接口层代码量大幅下降
- 查询性能好:优化器按请求字段自动裁剪 SQL,避免 N+1
- 类型安全:与 Strawberry 类型体系一致,mypy 校验友好
- 贴合 Django:认证、权限、校验直接复用 Django 现成机制
系统要求
| 项目 | 要求 |
|---|---|
| 语言 | Python 3 |
| 框架 | Django |
| 依赖 | strawberry-graphql |
注意事项
- 版本配套:需与 strawberry-graphql 主库版本保持配套升级
- 优化器需显式开启:
DjangoOptimizerExtension要加入 schema 扩展才会生效
历史版本
排序