在django中是否可能将BadRequest
作为异常抛出?
我看到可以抛出404 [1]。
用例:在帮助方法中,我从request.GET加载json。如果json因浏览器(IE)截断了url而被切割,我想引发匹配的异常。
一个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
django.http.HttpResponseBadRequest
? - ambiHttpResponse
类,或者创建另一个快捷方式,比如load_json_or_bad_request()
。 - Germanodjango.http.HttpResponseBadRequest
,因为我的方法返回解析后的数据,除非输入数据有误。 - guettliget_object_or_404
使用的相同机制。 - Germano