ReactをWagtail CMSに追加する必要があり、GraphQLを使用する必要がある場合は、このガイドが役立ちます。
これは、ブレント・クラークによるWagtail公式ブログの
記事の翻訳です。
GraphQLレベルでWagtail CMS(Django)を既存のサイトモデルと統合できることは、ForeignKeyと小さなコンバーターを少しだけ使用して、ブログ記事内で既存のAPI呼び出しを使用できることを意味します。
必須です:標準的なブログの作成を始めましょう。
ブログアプリを追加します。
python manage.py startapp blog
blog / models.pyを次のコンテンツで更新します
Wagtail CMS(Django)とGraphQLを実装するには、Grapheneを使用します。
注:このソリューションは、Graphene-djangoパッケージのおかげで、多くのDjangoプロジェクトに共通です。グラフェンのインストール:
pip install "graphene-django==1.2"
グラフェンのセットアップ:
GRAPHENEパラメーターをbase.pyに追加します
GRAPHENE = { 'SCHEMA': 'api.schema.schema', }
APIアプリケーションを追加します。
mysiteサイトのルートフォルダーに
apiというフォルダーを作成します
apps.pyを追加し
ます新しいapiフォルダー内に
apps.pyファイルを作成し、
次のファイルをそこに貼り付けます。
from django.apps import AppConfig class ApiConfig(AppConfig): name = 'api'
schema.pyを追加し
ますapiフォルダー内に、次の内容の別のschema.pyファイルを作成します。
from __future__ import unicode_literals import graphene from graphene_django import DjangoObjectType from blog.models import BlogPage from django.db import models class ArticleNode(DjangoObjectType): class Meta: model = BlogPage only_fields = ['id', 'title', 'date', 'intro', 'body'] class Query(graphene.ObjectType): articles = graphene.List(ArticleNode) @graphene.resolve_only_args def resolve_articles(self): return BlogPage.objects.live() schema = graphene.Schema(query=Query)
URL設定
2つの新しいインポートを
urls.pyファイルに追加します。
from django.views.decorators.csrf import csrf_exempt from graphene_django.views import GraphQLView
Wagtailアドレスのすぐ上にある2つの新しいURLを
urls.pyファイルに追加します。
url(r'^api/graphql', csrf_exempt(GraphQLView.as_view())), url(r'^api/graphiql', csrf_exempt(GraphQLView.as_view(graphiql=True, pretty=True))),
新しいアプリケーションを設定に追加します。
INSTALLED_APPS = (
変更をコミットします。
python manage.py makemigrations python manage.py migrate
すべてが正しく行われ、エラーが表示されない場合は、ローカルサーバーを起動します。
python manage.py runserver
新しいブログ投稿を作成します。
GraphQLのテスト:
http:// localhost:8000 / api / graphiqlに移動し、次のクエリを実行します。
query articles { articles { id title date intro body } }
次のようなものが表示されるはずです。
さらに、すでにGraphQLを使用して、Reactまたはサイトの他のコンポーネントとの対話を実装できます。