【问题标题】:AssertionError at /graphql/ A Schema is required to be provided to GraphQLViewAssertionError at /graphql/ 需要向 GraphQLView 提供 Schema
【发布时间】:2021-12-03 00:37:18
【问题描述】:

我有一个带有 GraphQL 路由的 Django API。

这是我的models.py:

    class MyBook(models.Model):
          id = models.BigAutoField(primary_key= True)
          book_name = models.CharField(max_length= 200)
          title = models.CharField(max_length= 200)

在我的 Schema.py 中:

import graphene
from graphene_django.views import GraphQLSchema
from graphene_django import DjangoObjectType
from publishing_house_app.models import *

class BookType(DjangoObjectType):
    class Meta:
        model= MyBook
        fields= "__all__"



class RootQuery(graphene.ObjectType):
    books = graphene.List(BookType)

    def resolve_books(self, root, info, **kwargs):
        MyBook.objects.all()

MyBookSchema = graphene.Schema(query= RootQuery)

在 urls.py 中:

from .views import *
from rest_framework.urlpatterns import path
from graphene_django.views import GraphQLView
from .GraphQL import Schema

urlpatterns = [
    path("graphql/", GraphQLView.as_view(graphiql= True, schema= Schema)),
]

我收到以下错误:

init 中的文件“C:\Python39\lib\site-packages\graphene_django\views.py”,第 127 行 断言是实例。 /graphql/ 处的断言错误 需要向 GraphQLView 提供 Schema。

【问题讨论】:

    标签: python django django-rest-framework graphene-python graphene-django


    【解决方案1】:

    您需要传递有效的石墨烯架构。您可以:

    urlpatterns = [
        path("graphql/", GraphQLView.as_view(graphiql=True, schema=MyBookSchema)),
    ]
    

    或者像这样在你的设置中定义它

    GRAPHENE = {
        ...
        "SCHEMA": "appname.schema.MyBookSchema",
        ...
    }
    

    在此之后,您可以创建一个 url 而无需传递架构:

    urlpatterns = [
        path("graphql/", GraphQLView.as_view(graphiql=True)),
    ]
    

    【讨论】:

      猜你喜欢
      • 2017-10-11
      • 1970-01-01
      • 1970-01-01
      • 2014-02-17
      • 1970-01-01
      • 2018-09-07
      • 2021-08-18
      • 1970-01-01
      • 2020-07-14
      相关资源
      最近更新 更多