“未知类型\”CreateAccountInput\”。尝试变异/创建新对象时使用graphene_django
Posted
技术标签:
【中文标题】“未知类型\\”CreateAccountInput\\”。尝试变异/创建新对象时使用graphene_django【英文标题】:"Unknown type \"CreateAccountInput\". with graphene_django when trying to mutate/create new object“未知类型\”CreateAccountInput\”。尝试变异/创建新对象时使用graphene_django 【发布时间】:2019-06-01 17:55:48 【问题描述】:我是 graphQL 的新手,我一直在尝试用它创建一个新的帐户对象。这是我现在的代码,但它是 graphQL 的 GUI,我不断收到“未知类型\”CreateAccountInput”错误。
schema.py
from authentication.models import Account
import graphene
from graphene import relay, ObjectType
from graphene_django import DjangoObjectType
from graphene import InputObjectType
class AccountGraphQL(DjangoObjectType):
class Meta:
model = Account
interfaces = (relay.Node, )
class Query(graphene.ObjectType):
username = graphene.String(argument=graphene.String(default_value="stranger"))
email = graphene.String(argument=graphene.String(default_value="stranger"))
password = graphene.String(argument=graphene.String(default_value="stranger"))
first_name = graphene.String(argument=graphene.String(default_value="stranger"))
info = graphene.String()
def def_resolve_create_account(self, info, argument):
return account.objects.create_user()
class CreateAccountInput(InputObjectType):
username = graphene.String(argument=graphene.String(default_value="stranger"))
email = graphene.String(argument=graphene.String(default_value="stranger"))
password = graphene.String(argument=graphene.String(default_value="stranger"))
first_name = graphene.String(argument=graphene.String(default_value="stranger"))
class CreateAccount(relay.ClientIDMutation):
class Input:
account = graphene.Argument(CreateAccountInput)
new_account = graphene.Field(AccountGraphQL)
@classmethod
def mutate_and_get_payload(cls, args, context, info):
account_data = args.get('account') # get account data from args
account = Account()
new_account = update_create_instance(account, account_data)
return cls(new_account=new_account)
class Mutation(ObjectType):
create_account = CreateAccount.Field()
schema = graphene.Schema(query=Query)
result = schema.execute(' create_account (argument: "graphql"')
我的突变:
mutation CreateNewAccount($input: CreateAccountInput!)
createAccount(input: $input)
newAccount
username
email
password
first_name
clientMutationId
我的查询
"input": "account":
"username": "graphql",
"email": "graphql@gmail.com",
"password": "graphql",
"first_name":"charles"
我不确定问题出在哪里,就我而言,我已经定义了输入类型
【问题讨论】:
【参考方案1】:对于使用 graphQL 的用户注册,您可以使用 django-graphql-auth。
这是来自docs的演示:
它包括用户注册和帐户验证
(在新标签页上打开视频)
这个包是我写的,有问题可以私聊我。
【讨论】:
以上是关于“未知类型\”CreateAccountInput\”。尝试变异/创建新对象时使用graphene_django的主要内容,如果未能解决你的问题,请参考以下文章
获取错误“未知”类型的参数不能分配给“错误”类型的参数 |空值'
UnknownType 类型的验证错误:未知类型 CreateUserInput
GraphQLError 未知类型“XYZMutationInput”