如何在Graphene Django项目配置中引用多个Schema文件用于GraphQL访问
解决Graphene-Django多App Schema合并问题
graphene-django的GRAPHENE["SCHEMA"]配置只接受单个schema路径,没法直接填多个App的schema,所以你之前的列表写法肯定不行。正确的做法是在项目根目录创建一个总schema,把两个App的schema合并后再配置,步骤如下:
1. 创建项目根目录的总schema文件
在你的Django项目根目录(和settings.py同目录)新建一个schema.py文件,内容如下:
import graphene # 导入两个App各自的Query和Mutation(如果有Mutation的话) from blog.schema import Query as BlogQuery from newsletter.schema import Query as NewsletterQuery from blog.schema import Mutation as BlogMutation # 没有Mutation可以删掉这行 from newsletter.schema import Mutation as NewsletterMutation # 没有Mutation可以删掉这行 # 合并查询类 class Query(BlogQuery, NewsletterQuery, graphene.ObjectType): pass # 合并变更类(如果两个App都有Mutation才需要,没有的话可以省略这部分) class Mutation(BlogMutation, NewsletterMutation, graphene.ObjectType): pass # 创建总schema schema = graphene.Schema(query=Query, mutation=Mutation) # 如果没有Mutation,就写schema = graphene.Schema(query=Query)
2. 修改settings.py的GRAPHENE配置
把GRAPHENE配置里的SCHEMA指向这个总schema:
GRAPHENE = { "SCHEMA": "你的项目名称.schema.schema", # 比如项目叫myblog,就写"myblog.schema.schema" }
这样配置后,GraphQL就能访问两个App里的所有Schema内容了。
内容的提问来源于stack exchange,提问作者Kimsen
相关产品推荐
相关产品推荐

