乐趣区

关于django:01安装GrapheneDjango系统学

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

装置

环境要求

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))),
]
退出移动版