Python 如何正确处理石墨烯错误?

Python 如何正确处理石墨烯错误?,python,django,exception,graphene-django,Python,Django,Exception,Graphene Django,我正处于石墨烯django的早期阶段 我有这样的变异 class(石墨烯突变): """ 1.仅限授权用户 2.他自己的“反对意见” 3.只能删除“隐藏类型异议”` """ ok=graphene.Boolean() 类参数: id=graphene.id() @类方法 def变异(cls、根目录、信息、**kwargs): tmp={ **夸尔斯, “创建人”:info.context.user, “隐藏”:正确 } obj=objective.objects.get(**tmp) obj.d

我正处于石墨烯django的早期阶段

我有这样的
变异

class(石墨烯突变):
"""
1.仅限授权用户
2.他自己的“反对意见”
3.只能删除“隐藏类型异议”`
"""
ok=graphene.Boolean()
类参数:
id=graphene.id()
@类方法
def变异(cls、根目录、信息、**kwargs):
tmp={
**夸尔斯,
“创建人”:info.context.user,
“隐藏”:正确
}
obj=objective.objects.get(**tmp)
obj.delete()
返回cls(确定=真)
而且
res
像我预期的那样被处理。它是
200
,在控制台后面有转发错误

{
“错误”:[
{
“消息”:“异议匹配查询不存在。”,
“地点”:[
{
“行”:131,
“专栏”:3
}
],
“路径”:[
“删除反对”
]
}
],
“数据”:{
“deleteObjective”:空
}
}
问题:
在我的
Python
服务器控制台上。我看到有人提出了错误

测试于16:01开始。。。
/Users/sarit/.pyenv/versions/multy\u herr/bin/python”/Users/sarit/Library/Application Support/JetBrains/Toolbox/apps/PyCharm-P/ch-0/193.5662.61/PyCharm.app/Contents/plugins/python/helpers/PyCharm/django\u test\u manage.py“test multy\u herr.objectives.tests.tests.tests\u jwt.UsersTest.test\u授权用户\u删除\u不存在异议/Users/sarit/mein code/multy\r
正在为别名“default”创建测试数据库。。。
系统检查未发现任何问题(0静音)。
回溯(最近一次呼叫最后一次):
文件“/Users/sarit/.pyenv/versions/multy\u herr/lib/python3.8/site packages/promise/promise.py”,第489行,来自执行者的“解析”
执行人(决议、拒绝)
文件“/Users/sarit/.pyenv/versions/multy_herr/lib/python3.8/site packages/promise/promise.py”,第756行,在executor中
返回解析(f(*args,**kwargs))
文件“/Users/sarit/.pyenv/versions/multy\u herr/lib/python3.8/site packages/graphql/execution/middleware.py”,第75行,make\u it\u promise
返回下一个(*args,**kwargs)
文件“/Users/sarit/mein codes/multy_-herr/multy_-herr/objectives/grapheql/mutations.py”,第36行,在mutate中
obj=objective.objects.get(**tmp)
文件“/Users/sarit/.pyenv/versions/multy\u herr/lib/python3.8/site packages/django/db/models/manager.py”,第82行,在manager\u方法中
返回getattr(self.get_queryset(),name)(*args,**kwargs)
文件“/Users/sarit/.pyenv/versions/multy_herr/lib/python3.8/site packages/django/db/models/query.py”,get中第415行
提出自我模型,提出自己的观点(
graphql.error.located\u error.GraphQLLocatedError:目标匹配查询不存在。
正在销毁别名“default”的测试数据库。。。
进程已完成,退出代码为0
问题:
我讨厌Python控制台中的错误,因为它会在崩溃分析中报警,我认为这是一个糟糕的代码

尝试:
1.添加
try-exception
并再次引发

@classmethod
def变异(cls、根目录、信息、**kwargs):
tmp={
**夸尔斯,
“创建人”:info.context.user,
“隐藏”:正确
}
尝试:
obj=objective.objects.get(**tmp)
除异常作为错误外:
引发异常
其他:
obj.delete()
返回cls(确定=真)
我得到了不满意的结果

res.data
Out[3]:OrderedDict([('DeleteObjective',None)])
res.错误
Out[4]:[graphql.error.located\u error.GraphQLLocatedError(“”)]
  • 自定义我自己的
    类属性
  • class(石墨烯突变):
    """
    1.仅限授权用户
    2.他自己的“反对意见”
    3.只能删除“隐藏类型异议”`
    """
    ok=graphene.Boolean()
    错误=graphene.List(graphene.String)
    类参数:
    id=graphene.id()
    @类方法
    def变异(cls、根目录、信息、**kwargs):
    tmp={
    **夸尔斯,
    “创建人”:info.context.user,
    “隐藏”:正确
    }
    尝试:
    obj=objective.objects.get(**tmp)
    除异常作为错误外:
    返回cls(确定=False,错误=err])
    其他:
    obj.delete()
    返回cls(确定=真)
    
    错误
    未出现在响应中

    res.data
    Out[3]:OrderedDict([('DeleteObjective',OrderedDict([('ok',False)]))
    res.错误
    
    问题:

    如何在我的
    Python
    控制台上抑制错误,并遵循
    graphene django
    中常见的
    异常

    以下是我如何处理graphene django中的错误

    class CreateBlog(graphene.Mutation):
       class Arguments:
          input = BlogInputType(required=True)
    
       ok = graphene.Boolean()
       blog = graphene.Field(BlogType)
       errors = graphene.Field(BlogErrorsInputType)
    
       @staticmethod
       def mutate(root, info, input):
          form = CreateBlogForm(data=input)
          if form.is_valid():
             blog = form.save()
             return CreateBlog(ok=True, blog=blog, errors=form.errors)
          return CreateBlog(ok=False, errors=form.errors)
    

    查看详细信息。

    以下是我如何处理Graphene Django中的错误

    class CreateBlog(graphene.Mutation):
       class Arguments:
          input = BlogInputType(required=True)
    
       ok = graphene.Boolean()
       blog = graphene.Field(BlogType)
       errors = graphene.Field(BlogErrorsInputType)
    
       @staticmethod
       def mutate(root, info, input):
          form = CreateBlogForm(data=input)
          if form.is_valid():
             blog = form.save()
             return CreateBlog(ok=True, blog=blog, errors=form.errors)
          return CreateBlog(ok=False, errors=form.errors)
    
    从中查看详细信息