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

标签 python django exception-handling httpresponse

是否可以在 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/

相关文章:

python - pandas.DataFrame.columns.values.tolist() 和 pandas.DataFrame.columns.tolist() 一样吗

Python xlwt - 使列只读(单元格保护)

c++ - 关于异常处理的一些问题

python - 如何防止用户在 Django DetailView 中看到不属于自己的数据?

python - Nginx、Uwsgi、Django 问题

wpf - 绑定(bind)设置在可视化设计器中有效,但我无法运行该应用程序

javascript - PhantomJS 错误处理

python - '属性错误: module 'usbiss' has no attribute Aclass' when creating class instance

python - SOAPpy - 命名参数列表中的保留字

Django if now = 模板中的发布日期