Django中间件具有一个<nav>
<ul>
<li><a href="">Home</a></li>
<li><a href="">About</a></li>
<li class="input-parent">
<div class="col-sm-12 col-md-12 col-lg-3 my-1 divSearch">
<form>
<div>
<input placeholder="Search">
<button type="submit">
<img>
</button>
</div>
</form>
</div>
</li>
</ul>
</nav>
钩子,可用于捕获异常和处理程序。
但是在使用Django restframe工作时存在一些问题
process_exception
例如,我尝试使用上述中间件捕获class ExceptionHandler(MiddlewareMixin):
@staticmethod
def process_exception(request, exception):
if isinstance(exception, ValidationError):
return Response(data=exception.messages, status=status.HTTP_400_BAD_REQUEST)
并返回HTTP 400
但是它将无法正常工作并引发以下错误
ValidationError
事实证明,其余框架视图层将在响应中添加AssertionError: .accepted_renderer not set on Response
。
如果我在视图外部处理异常。此属性将丢失,并导致另一个异常。
所以我的问题是:使用Django rest-framework处理中间件中的异常是否错误?
正确的方法是什么?
答案 0 :(得分:1)
在Django Rest框架中执行此操作的更好方法是创建一个自定义异常处理程序,并将默认异常处理程序替换为您的自定义处理程序。有关更多详细信息,请查看官方文档:http://www.django-rest-framework.org/api-guide/exceptions/#custom-exception-handling