首页 文章

Django rest框架:从外部包中捕获ValidationError

提问于
浏览
0

我正在使用django-rest-passwordreset包来实现密码重置 endpoints . 当给定的电子邮件不存在时,它会抛出 ValidationError 异常,从而导致500错误 . 如何捕获此错误,并返回400?我只是添加了如下所示的网址,所以我认为我不能用 try: except 或类似的东西包围它 .

urlpatterns = [... url(r'^ password / recover /',include('django_rest_passwordreset.urls')),...]

例外:

ValidationError at / password / recover / {'email':['没有与此电子邮件地址关联的活动用户或密码无法更改']}请求方法:POST请求URL:http://192.168 . 99.100:8000 / password / recover / Django版本:2.0.6回溯:文件“/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py”在内部35. response = get_response (请求)_get_response 128中的文件“/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py”.response = self.process_exception_by_middleware(e,request)文件“/ usr / local /lib/python3.6/site-packages/django/core/handlers/base.py“在_get_response 126. response = wrapped_callback(request,* callback_args,** callback_kwargs)File”/usr/local/lib/python3.6 /site-packages/django/views/decorators/csrf.py“in wrapped_view 54. return view_func(* args,** kwargs)File”/usr/local/lib/python3.6/site-packages/django/views/ generic / base.py“在视图69中 . 返回self.dispatch(request,* args,** kwargs)文件”/ usr / local / lib /python3.6/site-packages/rest_framework/views.py“在dispatch 483. response = self.handle_exception(exc)文件”/usr/local/lib/python3.6/site-packages/rest_framework/views.py“在handle_exception 443. self.raise_uncaught_exception(exc)文件“/usr/local/lib/python3.6/site-packages/rest_framework/views.py”在dispatch 480中.response = handler(request,* args,** kwargs)在帖子116中输入文件“/usr/local/lib/python3.6/site-packages/django_rest_passwordreset/views.py”.code ='invalid')}异常类型:ValidationError at / password / recover / Exception值:{'email ':['没有与此电子邮件地址关联的活动用户或密码无法更改']}请求信息:USER:AnonymousUser GET:无GET数据POST:无POST数据文件:无文件数据COOKIES:否cookie数据HEADERS:“email”:“bob@thebuilder.com”

1 回答

  • 0

    我设法通过创建一个自定义的异常处理程序来解决它,如here所述 .
    附加信息:

    • 筛选特定的错误消息以避免捕获所有ValidationErrors,
    • 否则返回标准的Django异常响应 .

相关问题