Python 如何正确处理石墨烯错误?
我正处于石墨烯django的早期阶段 我有这样的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
变异
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)
从中查看详细信息