strawberry-graphql

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 的项目
  • 关注查询性能的后端工程师

快速上手

  1. 安装扩展:pip install strawberry-graphql-django
  2. 用装饰器声明 GraphQL 类型
import strawberry_django
from strawberry import auto
from . import models

@strawberry_django.type(models.Fruit)
class Fruit:
    id: auto
    name: auto
  1. 定义查询并启用优化器构建 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])
  1. 在 urls.py 挂载视图:path('graphql/', AsyncGraphQLView.as_view(schema=schema))
  2. 访问 http://localhost:8000/graphql/ 在 GraphiQL 中调试

核心优势

  • 样板代码少:模型到类型的映射自动完成,接口层代码量大幅下降
  • 查询性能好:优化器按请求字段自动裁剪 SQL,避免 N+1
  • 类型安全:与 Strawberry 类型体系一致,mypy 校验友好
  • 贴合 Django:认证、权限、校验直接复用 Django 现成机制

系统要求

项目 要求
语言 Python 3
框架 Django
依赖 strawberry-graphql

注意事项

  • 版本配套:需与 strawberry-graphql 主库版本保持配套升级
  • 优化器需显式开启:DjangoOptimizerExtension 要加入 schema 扩展才会生效

历史版本

排序