共计 1333 个字符,预计需要花费 4 分钟才能阅读完成。
前言: 有能力能够本人看官网文档.
装置
环境要求
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 path
from graphene_django.views import GraphQLView
urlpatterns = [
# ...
path("graphql", GraphQLView.as_view(graphiql=True)),
]
Django 1.11 版本:
from django.conf.urls import url
from graphene_django.views import GraphQLView
urlpatterns = [
# ...
url(r"graphql", GraphQLView.as_view(graphiql=True)),
]
补充一点,如果你不心愿在浏览器中应用 GraphiQL,视图里将 graphiql 的 True 改为 False。
定义计划
定义一个计划(schema),我了解 schema 为计划。在计划里,你能够指定如何查问(query)和变动(mutate)。我写一个实例:
import graphene
class 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.py
from django.urls import path
from django.views.decorators.csrf import csrf_exempt
from graphene_django.views import GraphQLView
urlpatterns = [
# ...
path("graphql", csrf_exempt(GraphQLView.as_view(graphiql=True))),
]
正文完