前言: 有能力能够本人看官网文档.

装置

环境要求

Django版本大于1.11

装置办法

pip 装置

pip install graphene-django

软件退出Django

Django我的项目的settings.py的INSTALLED\_APPS中退出Graphene-Django, 另外要退出动态资源,用于GraphiQL

补充一点:

GraphiQL是GraphQL的集成开发环境(IDE),多了一个i就是integrated(集成,交融)的意思。

INSTALLED_APPS = [    ...    "django.contrib.staticfiles", # GraphiQL须要这个动态资源    "graphene_django"]

退出路由

Django我的项目的urls.py退出视图,Django版本不同,用法稍有不同。看起来仿佛就是一个正则的区别。

Django 2.0及以上版本

from django.urls import pathfrom graphene_django.views import GraphQLViewurlpatterns = [    # ...    path("graphql", GraphQLView.as_view(graphiql=True)),]

Django 1.11版本:

from django.conf.urls import urlfrom graphene_django.views import GraphQLViewurlpatterns = [    # ...    url(r"graphql", GraphQLView.as_view(graphiql=True)),]

补充一点,如果你不心愿在浏览器中应用GraphiQL,视图里将graphiql的True改为False。

定义计划

定义一个计划(schema),我了解schema为计划。在计划里,你能够指定如何查问(query)和变动(mutate)。我写一个实例:

import grapheneclass Query(graphene.ObjectType):    hello = graphene.String(default_value="Hi!")schema = graphene.Schema(query=Query)

大略的思路就是: 继承graphene.ObjectType, 定义好你要查问的字段以及数据起源, 最初将定义的查问对象赋值给Schema的query里.

配置计划

计划定义好了, 还须要把计划给到django的配置里, 也就是我的项目的settings.py

大略长这样:

GRAPHENE = {    "SCHEMA": "django_root.schema.schema"}

番外: CSRF爱护

在路由urls.py里, 加一层csrf\_exempt即可.

# urls.pyfrom django.urls import pathfrom django.views.decorators.csrf import csrf_exemptfrom graphene_django.views import GraphQLViewurlpatterns = [    # ...    path("graphql", csrf_exempt(GraphQLView.as_view(graphiql=True))),]