フリーランス 技術調査ブログ

フリーランス/エンジニア Ruby Python Nodejs Vuejs React Dockerなどの調査技術調査の備忘録

Django/GrapheneでGraphQL実装①

はじめに

  • DjangoとGrapheneを利用してGraphQLの環境を構築する。DBはsqlliteを利用する。 docs.graphene-python.org

  • 公式ドキュメントのインストール手順を踏んでやっているが、エラーが出たので、エラーの解消はまた次回とする

ライブラリのインストール

pip install graphene-django
pip install graphene

プロジェクトフォルダのsettings.pyの設置

  • Djangoプロジェクトのsettings.pyファイルのINSTALLED_APPSにgraphene_djangoを追加します。
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles', #GraphiQLに必要
    'graphene_django',  #  こちらを追加する
    '<アプリケーション>'
]
  • Djangoプロジェクトのsettings.pyファイルでGrapheneのスキーマの場所を定義します。
GRAPHENE = {
    'SCHEMA': 'hogeproject.schema.schema'
}

エンドポイントの追加

  • Djangoプロジェクトのurls.pyにgraphql URLを追加する必要があります。
from django.contrib import admin
from django.urls import path, include
from django.views.decorators.csrf import csrf_exempt
from graphene_django.views import GraphQLView


urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('boardapp.urls')),
    path("graphql/", csrf_exempt(GraphQLView.as_view(graphiql=True))),
]

プロジェクトに schema.pyを作成

import graphene

import cookbook.ingredients.schema


class Query(cookbook.ingredients.schema.Query, graphene.ObjectType):
    # This class will inherit from multiple Queries
    # as we begin to add more apps to our project
    pass

schema = graphene.Schema(query=Query)

上記の状態で動作させる

  • Could not import 'boardproject.schema.schema' for Graphene setting 'SCHEMA'. ModuleNotFoundError: No module named 'boardapp.schema'. のエラーメッセージが表示される f:id:PX-WING:20200803080041p:plain

解決方法