Python Графен Мутация не работает - PullRequest
0 голосов
/ 16 января 2019

Я новичок в Graphql и Python.

Итак, когда я разрабатывал lil-проект, у меня просто была эта проблема с мутацией:

class User(graphene.ObjectType):
    id = graphene.ID(required=False)
    username = graphene.String()
    last_login = graphene.DateTime(required=False)

class CreateUser(graphene.Mutation):

    class Arguments:
        username = graphene.String()

    user = graphene.Field(User)

    def mutate(self, info, username):
        user = User(username=username)
        return CreateUser(user=user)

class Mutations(graphene.ObjectType):
    create_user = CreateUser.Field()

schema = graphene.Schema(mutation=Mutations)

И я звоню в Почтальон:

{ "mutation": "{createUser (username: 'User test') {user {username}}}"}

Мой заголовок:

Content-Type: применение / JSON

И мой ответ: null

Я не знаю, является ли моя проблема реализацией или моим вызовом.

------------------- РЕДАКТИРОВАНИЕ --------------------------- - Я просто изменяю что-то в своем коде, теперь у меня есть запрос, и он работает, и я реализую простой запрос прямо в коде, и он работает

Я только что сделал это:

import graphene
import json
from datetime import datetime

class User(graphene.ObjectType):
    id = graphene.ID(required=False)
    username = graphene.String()
    last_login = graphene.DateTime(required=False)


def __populate_users__():
    return [
        User(username='User1 teste', last_login=datetime.now()),
        User(username='User2 teste', last_login=datetime.now()),
        User(username='User3 teste', last_login=datetime.now())
    ]


class Query(graphene.ObjectType):

    users = graphene.List(User, first=graphene.Int())
    all_users = graphene.List(User)

    def resolve_users(self, info, first):
        return __populate_users__()[:first]

    def resolve_all_users(self, info):
        return __populate_users__()

class CreateUser(graphene.Mutation):

    class Arguments:
        username = graphene.String()

    user = graphene.Field(User)

    def mutate(self, info, username):
        print "TESTE"
        user = User(username=username)
        return CreateUser(user=user)

class Mutations(graphene.ObjectType):
    create_user = CreateUser.Field()

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

# IT WORKS!!!
result = schema.execute(
    '''
    mutation {
        createUser(username: "User test") {
            user {
                username
            }
        }
    }
    '''
)

items = dict(result.data.items())
print(json.dumps(items))

Поэтому, когда я вызываю мой запрос в Почтальоне, он тоже работает:

{ "query": "{allUsers {username lastLogin}}"}

И заголовки:

Content-Type: применение / JSON

Я не могу понять, почему запрос работает, а мутация не работает в Почтальоне.

...