如何解决Django中使用graphdoc生成文档时出现的markdown错误
你遇到的报错是因为graphdoc.to_doc()方法接收到的参数不符合要求,你直接从FileUploadGraphQLView实例中获取的schema不是graphdoc可识别的标准GraphQL Schema实例,大概率是视图初始化时schema还未完成绑定,或者取值方式有误,可按照以下步骤排查解决:
- 优先直接导入你项目中定义好的Schema实例,不要通过视图实例获取,示例代码如下:
# 假设你的schema在项目schema.py文件中定义,格式类似: # import graphene # schema = graphene.Schema(query=Query, mutation=Mutation) from .schema import schema import graphdoc from django.http import HttpResponse # 视图内的返回逻辑 return HttpResponse( graphdoc.to_doc(schema), content_type='text/html' )
- 如果必须从视图中获取schema,先确认你的
FileUploadGraphQLView类已经提前绑定了schema属性:
from graphene_django.views import GraphQLView from .schema import schema class FileUploadGraphQLView(GraphQLView): schema = schema # 提前绑定schema # 其余你的自定义配置,比如文件上传相关逻辑
- 如果上述操作后仍报错,可先手动执行GraphQL内省查询生成符合要求的Schema对象再传入:
from graphql import get_introspection_query, build_client_schema from .schema import schema import graphdoc # 生成内省结果 introspection_res = schema.execute(get_introspection_query()).data client_schema = build_client_schema(introspection_res) return HttpResponse( graphdoc.to_doc(client_schema), content_type='text/html' )
- 检查版本兼容性:如果使用的是graphene 3.x版本,请安装
graphdoc>=0.3.0;如果使用graphene 2.x版本,请安装graphdoc==0.2.2,版本不兼容也会触发类型错误。
内容的提问来源于stack exchange,提问作者smrf
相关产品推荐
相关产品推荐

