关于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))),
]

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理