是否可以将 BadRequest
作为 django 中的异常?
我看到您可以提出 404 [1]。
用例:在辅助方法中,我从 request.GET 加载一个 json。如果由于浏览器 (IE) 切断了 url 而切断了 json,我想提出一个匹配的异常。
一个 BadRequest 异常看起来很合适,但到目前为止 django 中似乎没有这样的异常。
在 1.6 中有一个 SuspiciousOperation 异常。但这在我的情况下不匹配,因为它与安全无关。
当然,我可以在视图方法中围绕我的辅助方法尝试 try..except,但这不是 DRY。
有人有一个解决方案,我不需要 try..exception 每次调用我的辅助方法吗?
[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
原文由 guettli 发布,翻译遵循 CC BY-SA 4.0 许可协议
您需要自定义中间件来处理您提出的异常。利用自定义异常检查中间件中的这种情况。