需要向GraphQLView提供架构

piy*_*ngh 3 django graphql

我正在按照教程将Graphql与Django集成,当我在本地计算机上访问graphql URL时,我根据该教程做了一切

HTTP://本地主机:8000/graphql

我发现以下错误

/ graphql中的AssertionError

需要向GraphQLView提供架构.

请求方法:GET请求URL: http:// localhost:8000/graphql Django版本:1.11.1异常类型:AssertionError异常值:
需要向GraphQLView提供Schema.异常位置:/home/psingh/Projects/django_graphql/env/local/lib/python2.7/site-packages/graphene_django/views.py in init,第84行Python可执行文件:/ home/psingh/Projects/django_graphql/env/bin/python Python版本:2.7.6 Python路径:
['/ home/psingh/Projects/django_graphql/project','/ home/psingh /Projects/django_graphql/env/lib/python2.7','/ home/psingh /Projects/django_graphql/env/lib/python2.7/plat-x86_64-linux-gnu','/ home/psingh /Projects/Django_graphql/env/lib/python2.7/lib -tk','/ home/psingh /Projects/django_graphql/env/lib/python2.7/lib-old','/ home/psingh /Projects/Django_graphql/env/lib/python2.7/lib-dadload','/ usr/lib/python2.7 ','/ usr/lib/python2.7/plat-x86_64-linux_gnu','/ usr/lib/python2.7/lib -tk','/ home/psingh/Projects/django_graphql/env/local/lib/python2.7/site-packages','/ home/psingh /Projects/Django_graphql/env/lib/python2.7/site-package']服务器时间:2017年5月12日星期五12:18:31 +0000

在settings.py中

GRAPHENE = {
'SCHEMA': 'project.schema.schema'
Run Code Online (Sandbox Code Playgroud)

}

project> schema.py

import graphene
import mainapp.schema 
class Query(mainapp.schema.Query, graphene.ObjectType):
  # This class will inherit from multiple Queries
  # as we begin to add more apps to our project
  pass

schema = graphene.Schema(query=Query)
Run Code Online (Sandbox Code Playgroud)

应用> schema.py

import graphene
from graphene_django.types import DjangoObjectType
from cookbook.ingredients.models import Category, Ingredient

class CategoryType(DjangoObjectType):
  class Meta:
     model = Category


 class IngredientType(DjangoObjectType):
   class Meta:
      model = Ingredient


 class Query(graphene.AbstractType):
   all_categories = graphene.List(CategoryType)
   all_ingredients = graphene.List(IngredientType)

   def resolve_all_categories(self, args, context, info):
     return Category.objects.all()

  def resolve_all_ingredients(self, args, context, info):
     # We can easily optimize query count in the resolve method
     return Ingredient.objects.select_related('category').all()
Run Code Online (Sandbox Code Playgroud)

project_urls.py

from django.conf.urls import include, url
from django.contrib import admin

from graphene_django.views import GraphQLView
import schema

urlpatterns = [
   url(r'^admin/', admin.site.urls),
   url(r'^graphql', GraphQLView.as_view(graphiql=True)),
   url(r'^', include('mainapp.urls')),    

]
Run Code Online (Sandbox Code Playgroud)

任何帮助都会很棒.我是编码新手.提前致谢.

Tim*_*imo 5

你必须在这里settings.py看到你的架构:

GRAPHENE = { 'SCHEMA': 'cookbook.schema.schema' }

您需要2个schema.py文件,一个位于项目的根级别,另一个位于app文件夹中.

  • 我已经添加为GRAPHENE = {'SCHEMA':'project.schema.schema'} (2认同)

Jam*_*yda 5

如果您不想在其中添加GRAPHENE变量,settings.py则可以schemeGraphQLView.as_view()方法调用中传递参数

   from onlineshop_project.scheme import schema
   urlpatterns = [
       url(r'^admin/', admin.site.urls),
       url(r'^graphql', GraphQLView.as_view(graphiql=True, schema=schema)),
   ]
Run Code Online (Sandbox Code Playgroud)

您可以查看文档