Steps for Django GraphQL -- Query api

首先我们先在 graphAPI 子专案资料夹下面创建一个资料夹: schemaClass 来放我们所有的 schema python 档
现在资料夹结构长这样:

- api- djangoAPI+ graphAPI     migrations   - schemaClass     admin.py     apps.py     models.py     schema.py     tests.py     views.py     __init__.py- manage.py

视线回到上次我们製作的 playData api
输入值是 name,返回来的格式长这样

[    {        ID: 2,        NAME: "Charmander",        LV: 35,        SKILL: "fire"    }]

接下来我们进入 schemaClass 创建 __init__.pyplayDataSchema.py
开始定义资料的 schema

在 playDataSchema.py 中加入:

import grapheneclass playDataSchema(graphene.ObjectType):    ID = graphene.Int()    NAME = graphene.String()    LV = graphene.Int()    SKILL = graphene.String()

然后回到 graphAPI/schema.py 编辑成以下:

import graphene#--------- 新增以下from collections import namedtuple from .schemaClass.playDataSchema import playDataSchema from api.api.playData import playData#---------class Query(graphene.ObjectType):    reverse = graphene.String(word=graphene.String(default_value='t'))    def resolve_reverse(self, info, word):        print(self)        return 'hello'#--------- 新增以下 ------------------------    playData = graphene.List(playDataSchema, name = graphene.String())    def resolve_playData(self, info, name):        data = playData( {'name': name} )['data']        if len(data) > 0:            # --- 转成 namedtuple ---            outDataNT = namedtuple('myData', [ key for key in data[0] ])            outData = [ outDataNT(**eachData) for eachData in data ]            # ----------------------            return outData        else:             return []#-------------------------------------------schema = graphene.Schema(query=Query)

graphene.List( schema 类别, 需要输入的条件 ) 代表要返回一个 list (非阵列用 NonNull),其中每格里面的型别都是第一格输入的型别 (这边是 playDataSchema)。

然后因为 graphene 预设是用 getattr() 这个函数抓值,所以我们要把回来的 dict 转换成 namedtuple 型别 (这个型别可以用 getattr() 抓值)


结束后 run server 就有结果噜!

http://img2.58codes.com/2024/20107235VcolPLc4aq.png


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章