前言: 有能力能够本人看官网文档.
装置
环境要求
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))),]