Я использую пакет django-rest-passwordreset
для реализации конечных точек сброса пароля.
Когда данное письмо не существует, оно выдает исключение ValidationError
, вызывая ошибку 500. Как я могу поймать эту ошибку и вернуть вместо нее 400? Я просто добавил URL-адреса, как показано ниже, поэтому я не думаю, что смогу окружить их try: except
или чем-то подобным.
urlpatterns = [
...
url (r '^ пароль / recovery /', include ('django_rest_passwordreset.urls')),
...
]
Исключение:
Ошибка Validation в / пароль / восстановить /
{'email': ['Нет активных пользователей, связанных с этим адресом электронной почты, или пароль нельзя изменить']}
Способ запроса: POST
URL запроса: http://192.168.99.100:8000/password/recover/
Версия Django: 2.0.6
Traceback:
Файл "/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py" во внутреннем
35. response = get_response (запрос)
Файл "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py" в _get_response
128. 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 (запрос, * callback_args, ** callback_kwargs)
Файл "/usr/local/lib/python3.6/site-packages/django/views/decorators/csrf.py" в wrapped_view
54. return view_func (* args, ** kwargs)
Файл "/usr/local/lib/python3.6/site-packages/django/views/generic/base.py" в представлении
69. вернуть self.dispatch (запрос, * args, ** kwargs)
Файл "/usr/local/lib/python3.6/site-packages/rest_framework/views.py" отправляется
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" отправляется
480. response = обработчик (запрос, * args, ** kwargs)
Файл "/usr/local/lib/python3.6/site-packages/django_rest_passwordreset/views.py" в записи
116. code = 'invalid')}
Тип исключения: ValidationError в / пароль / восстановить /
Значение исключения: {'email': ['Нет активных пользователей, связанных с этим адресом электронной почты, или пароль не может быть изменен']}
Запрос информации:
ПОЛЬЗОВАТЕЛЬ: AnonymousUser
GET: нет данных GET
POST: нет данных POST
ФАЙЛЫ: Нет данных ФАЙЛОВ
COOKIES: нет данных cookie
HEADERS: "электронная почта": "bob@thebuilder.com"