Django 是否有立即 http 响应的异常?

2024-04-23

Django-Tastypie 有ImmediateHttpResponse允许立即向客户端返回响应的异常:

raise ImmediateHttpResponse(response='a message')

姜戈有Http404 https://docs.djangoproject.com/en/dev/topics/http/views/#the-http404-exception,但我找不到更普遍的例外,例如ImmediateHttpResponse.

您使用什么技术立即向客户端返回 400 响应?

例如有模型:

class Subscriber(Model):

    def delete(self, *args, **kwargs):
        raise ImmediateHttpResponse('Deleting subcribers is not allowed!')

尝试删除一个对象将返回给客户端400使用给定的消息进行响应。


我认为你想要的是中间件 https://docs.djangoproject.com/en/dev/topics/http/middleware/它实现了一个进程异常 https://docs.djangoproject.com/en/dev/topics/http/middleware/#process_exception.

它的工作原理如下:您在视图上引发异常(例如 ImmediateHttpResponse)。如果你的中间件捕获了异常,中间件会返回一个响应,在你的情况下,状态为 400。如果你没有捕获异常,Django 最终会捕获它,返回状态 500(服务器错误),或其他状态。

最简单的例子是捕获 Http404 的中间件。如果您在中间件中捕获异常 Http404,则可以返回您想要的任何响应(状态 200、400 等)。如果你没有捕获(即中间件的 process_exception 方法返回 None),Django 将为你捕获它并返回状态为 404 的响应。这实际上是你想要响应的自定义异常的标准方法一种自定义方式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django 是否有立即 http 响应的异常? 的相关文章

随机推荐