尝试使用Django和GraphQL进行实践 Part.1

首先

最近我第一次了解到GraphQL。由于我实际上很想先试试看,所以我用Django简单记录了GraphQL的实现方法。

本文中是以本地环境为假设进行编写的,但由于原始源码是通过容器进行利用的,如果您觉得环境配置麻烦的话,请使用容器。

標題解釋

第一部分:初學者的環境搭建和基本寫作方式 ←現在在這裡

第二部分:在GraphQL中实现没有关联的筛选。

第三部分:实现数据的添加、删除和编辑(变更)操作。

环境构建

这是在使用Django创建项目时需要的开门咒语。

% django-admin startproject mysite .
% django-admin startapp graphql_sample

执行以上命令后,请不要忘记更新mysite/settings.py中的INSTALLED_APPS。(我曾经忘记了一小时才找到解决方法)

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles', # GraphQLを使うために追加する
    'graphene-django', # GraphQLを使うために追加する
    'graphql_sample', # 追加したapp名を追記する
]

# GraphQLを適応させたいスキーマを選択する
GRAPHENE = {
    # これから書くschema.pyの場所を追記する
    "SCHEMA": "graphql_sample.schema.schema",
}

我们要在URL中添加使用GraphQL的部分。

from django.contrib import admin
from django.urls import path
from graphene_django.views import GraphQLView

urlpatterns = [
    path('admin/', admin.site.urls),
    # /graphqlでは、GraphQLを使う宣言
    path("graphql", GraphQLView.as_view(graphiql=True)),
]

一旦实现仅包含All()的GraphQL。

因为写出所有实现部分很麻烦,所以只提取schema.py。
其他的代码在这里,希望能够作为参考。

import graphene
from graphene_django import DjangoObjectType
from graphql_sample.models import User, Item


class UserType(DjangoObjectType):
    class Meta:
        model = User


class ItemType(DjangoObjectType):
    class Meta:
        model = Item


class Query(graphene.ObjectType):
    user = graphene.List(UserType, id=graphene.Int())
    item = graphene.List(ItemType, id=graphene.Int())

    def resolve_user(self, info, **kwargs):
        return User.objects.all()

    def resolve_item(self, info, **kwargs):
        return Item.objects.all()


schema = graphene.Schema(query=Query)

我們也已經創建了樣本資料,請執行以下命令進行初始設定。

% python3 manage.py makemigrations
% python3 manage.py migration
% python3 manage.py loaddata ./graphql_sample/fixtures/test.json

如果出现包含force_text的错误,请尝试以下方法,建议在容器中使用。
https://qiita.com/abemaru/items/b5cdfb136306b3203ca2

如果成功地放入测试数据,就执行runserver,并访问localhost:8080/graphql。

% python3 manage.py runserver
スクリーンショット 2022-07-16 18.13.31.png

最后

由于全做花费的时间比我想象的多,所以我决定在Part2中认真地写查询。

点击链接查看更多: https://qiita.com/abemaru/items/cc862c548cdec65fa640

广告
将在 10 秒后关闭
bannerAds