🍌

DjangoでGraphQL

2021/09/15に公開

概要

DjangoでGraphqlが使えないか調査していたらgraphene-djangoを見つけたので使ってみました

ゴール

Djangoにgraphene-djangoをインストールしてシンプルなクエリを発行してみる

成果物

サンプルをGitHubにおいておきました

デバッグ用のGUIツールが用意されているので、Docker起動後テストデータを投入しサクッと確認ができました

ポイント

以下のようにGraphQLのスキーマをコードベースで管理できる
Django側でGraphQLのIFを良しなに吸収して貰えるのもお手軽で良い

import graphene
from graphene_django import DjangoObjectType

from .models import Staff, Store


class StoreType(DjangoObjectType):
    class Meta:
        model = Store


class StaffType(DjangoObjectType):
    class Meta:
        model = Staff


class Query(graphene.ObjectType):
    stores = graphene.List(StoreType)
    staffs = graphene.List(StaffType)

    def resolve_stores(self, info, **kwargs):
        return Store.objects.all()

    def resolve_staffs(self, info, **kwargs):
        return Staff.objects.all()


schema = graphene.Schema(query=Query)

その他

django以外で使いたい場合は、SQLAlchemy版Google App Engine版もあるので用途に応じて選択も可能でした

Discussion