91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

GraphQL graphene-django 基本使用文檔

發布時間:2020-07-13 08:04:41 來源:網絡 閱讀:1317 作者:295631788 欄目:開發技術

graphene-django 基本使用文檔

介紹

一種用于 API 的查詢語言
GraphQL 既是一種用于 API 的查詢語言也是一個滿足你數據查詢的運行時。 GraphQL 對你的 API 中的數據提供了一套易于理解的完整描述,使得客戶端能夠準確地獲得它需要的數據,而且沒有任何冗余,也讓 API 更容易地隨著時間推移而演進,還能用于構建強大的開發者工具。

文檔

官網 http://graphql.cn/

參考文檔 https://passwo.gitbook.io/graphql/index/drf

個人項目應用

https://github.com/hequan2017/seal

模塊

pip install  graphene-django

使用

INSTALLED_APPS = [
        'graphene_django',
]

GRAPHENE = {
    'SCHEMA': 'app.schema.schema'
}

urls.py
from graphene_django.views import GraphQLView
from app.schema import schema

    path('graphql/', GraphQLView.as_view(graphiql=True, schema=schema)),

app/schema.py

from django.contrib.auth.models import  User  as Users
from graphene_django import DjangoObjectType
import graphene

# 相關文檔 https://passwo.gitbook.io/graphql/index/drf
class UserType(DjangoObjectType):
    class Meta:
        model = Users

class Query(graphene.ObjectType):
    users = graphene.List(UserType)

    # List == Field:
    # List 返回結果會是遍歷所有查詢結果
    # Field 返回結果只存在單個 (其中可添加參數, ex. pk)
    single_user = graphene.Field(UserType, pk=graphene.Int())

    # 定義函數名的格式: resolve_字段
    # **kwargs 傳遞參數
    # pk: 如果在字段中定義, 則方法參數中必含
    def resolve_users(self, info, **kwargs):
        return Users.objects.all()

    def resolve_single_user(self, info, pk):
        return Users.objects.get(id=pk)

class TQuery(Query, graphene.ObjectType):
    pass

class CreateUser(graphene.Mutation):
    class Arguments:
        username = graphene.String(required=True)

    info = graphene.Field(UserType)
    ok = graphene.Boolean()

    def mutate(self, info, **kwargs):
        # print(info.context.user, '==當前用戶==')
        # kwargs 是傳遞參數中的變量
        # user = info.context.user
        user_obj = Users(**kwargs)
        try:
            user_obj.save()
            ok = True
        except Exception as e:
            print(e)
            ok = False
        return CreateUser(ok=ok, info=user_obj)

class CMutation(object):
    create_user = CreateUser.Field()

class UpdateUser(graphene.Mutation):
    class Arguments:
        username = graphene.String()
        pk = graphene.Int(required=True)

    info = graphene.Field(UserType)
    ok = graphene.Boolean()

    def mutate(self, info, **kwargs):
        pk = kwargs.get('pk')
        user_obj = Users.objects.get(id=pk)
        if not user_obj:
            return UpdateUser(ok=False)
        user_obj.__dict__.update(**kwargs)
        user_obj.save()
        ok = True
        return UpdateUser(ok=ok, info=user_obj)

class UMutation(object):
    update_user = UpdateUser.Field()

class DeleteUser(graphene.Mutation):
    class Arguments:
        pk = graphene.Int()

    ok = graphene.Boolean()

    def mutate(self, info, **kwargs):
        pk = kwargs.get('pk')

        user = Users.objects.get(id=pk)
        user.delete()
        return DeleteUser(ok=True)

class DMutation(object):
    delete_user = DeleteUser.Field()

class Mutations(CMutation, UMutation,DMutation,graphene.ObjectType):
    pass

schema = graphene.Schema(query=TQuery, mutation=Mutations)

請求

請求地址 : http://localhost/graphql

GraphQL 請求參數

query{
  users{
    id,
    username,
    email
  }
}

query{
  singleUser(pk: 1){
    username,
    email
  }
}

mutation createUser {
 createUser (username: "test1") {
     info {
         id,
     },
     ok
 }
}

mutation updateUser {
 updateUser (pk:2,username: "test2") {
     info {
         id,
     },
     ok
 }
}

mutation deleteUser {
 deleteUser (pk:2) {
     ok
 }
}
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

文登市| 湘乡市| 舟山市| 夹江县| 镇安县| 松潘县| 阿坝县| 凉城县| 富锦市| 织金县| 房产| 枣庄市| 环江| 汕尾市| 固原市| 怀宁县| 彰化市| 凤凰县| 巴南区| 大姚县| 昌都县| 雷山县| 和田县| 鹤庆县| 松滋市| 赤壁市| 法库县| 盱眙县| 兴隆县| 英吉沙县| 神木县| 通山县| 余干县| 博野县| 克什克腾旗| 越西县| 衢州市| 曲水县| 珲春市| 柯坪县| 辽源市|