是否可以在 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
异常或其子类。
在您的示例中,它看起来像:
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/