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(使用前将#替换为@)