gpt4 book ai didi

python - django:将 BadRequest 引发为异常?

转载 作者:IT老高 更新时间:2023-10-28 21:07:02 25 4
gpt4 key购买 nike

是否可以在 django 中引发 BadRequest 作为异常?

我看到你可以提出 404 [1]。

用例:在辅助方法中,我从 request.GET 加载 json。如果在浏览器 (IE) 剪切 url 后 json 被剪切了,我想提出一个匹配的异常。

BadRequest 异常看起来很合适,但到目前为止,django 中似乎没有这样的异常。

在 1.6 中有一个 SuspiciousOperation 异常。但这在我的情况下不匹配,因为它与安全无关。

当然,我可以在 View 方法中的辅助方法周围放一个 try..except,但这不是 DRY。

有没有一个解决方案,我不需要 try.. 每次调用我的辅助方法时都会出现异常?

[1] https://docs.djangoproject.com/en/1.6/ref/exceptions/#django.core.urlresolvers.Resolver404

更新

代码示例:

def my_view(request):
data=load_data_from_request(request) # I don't want a try..except here: DRY
process_data(data)
return django.http.HttpResponse('Thank you')

def load_data_from_request(request):
try:
data_raw=json.loads(...)
except ValueError, exc:
raise BadRequest(exc)
...
return data

最佳答案

其他答案正在解释如何返回具有 400 状态的 HTTP 响应。

如果你想挂接到 Django 的 400 error handling ,您可以提出 SuspiciousOperation异常或其子类。

查看文档 herehere .

在您的示例中,它看起来像:

from django.core.exceptions import SuspiciousOperation

def load_data_from_request(request):
try:
data_raw = json.loads(...)
except ValueError:
raise SuspiciousOperation('Invalid JSON')
# ...
return data

关于python - django:将 BadRequest 引发为异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25422176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com