Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 石墨烯错误消息_Django_Graphql_Graphene Django - Fatal编程技术网

Django 石墨烯错误消息

Django 石墨烯错误消息,django,graphql,graphene-django,Django,Graphql,Graphene Django,我想知道是否有可能翻译石墨烯提供的验证错误消息?例如:“未提供身份验证凭据”,如下面的代码示例所示 { "errors": [ { "message": "Authentication credentials were not provided", "locations": [ { "line": 2, "column": 3 } ] } ], "data":

我想知道是否有可能翻译石墨烯提供的验证错误消息?例如:“未提供身份验证凭据”,如下面的代码示例所示

{
  "errors": [
    {
      "message": "Authentication credentials were not provided",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ]
    }
  ],
  "data": {
    "viewer": null
  }
}
创建自定义错误类型
导入石墨烯
从graphene_django.utils导入camelize
类错误类型(graphene.Scalar):
@静力学方法
def序列化(错误):
如果存在(错误,dict):
如果出现错误。获取(“\uuuuu all\uuuuuuu”,False):
errors[“non_field_errors”]=errors.pop(“\uu all\uuuuuuuuuuuuuuuuuuu”)
返回camelize(错误)
引发异常('errors'应该是dict!')
将其添加到您的应用程序中
类My突变(石墨烯突变):
#添加自定义错误类型
错误=石墨烯字段(ErrorType)
形式
@类方法
def变异(cls、根目录、信息、**kwargs):
f=cls.表格(kwargs)
如果f.是有效的():
通过
其他:
#将表单错误传递给自定义错误类型
返回cls(errors=f.errors.get_json_data())
例子 使用类似的错误类型,其工作原理如下,例如用于注册:

mutation {
  register(
    email:"skywalker@email.com",
    username:"skywalker",
    password1: "123456",
    password2:"123"
  ) {
    success,
    errors,
    token,
    refreshToken
  }
}
应返回:

{
  "data": {
    "register": {
      "success": false,
      "errors": {
        "password2": [
          {
            "message": "The two password fields didn’t match.",
            "code": "password_mismatch"
          }
        ]
      },
      "token": null,
      "refreshToken": null
    }
  }
}

贝姆·文多·克劳迪奥!这是一个很好的解决方案。佩德罗本:你能添加
SomeForm
吗?例如,我真的不知道如何实现你需要理解的
cls