Django: обработка исключений ProtectedError не работает - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь обработать исключение ProtectedError и пытаюсь опубликовать собственное сообщение об ошибке в моем шаблоне.

def delete(self, request, *args, **kwargs):
    obj = self.get_object()
    get_success_url = self.get_success_url()
    try:
        obj.delete()
        messages.success(self.request, self.success_message % obj.__dict__)
    except ProtectedError:
        messages.success(self.request, "can't delete")

    return super().delete(request, *args, **kwargs)

без ProtectedError оно отправляет меня обратно на страницу списка с сообщением об удалении успешно, но для ProtectedError оноотправляет меня на какую-то общую страницу с ошибкой ProtectedError по адресу / settings / currency / 1 / delete / message.

Спасибо.

1 Ответ

0 голосов
/ 06 февраля 2019

Как я вижу, в обоих случаях ваш возврат одинаков:

return super().delete(request, *args, **kwargs)

Вместо этого, кроме, выведите ошибку:

raise ProtectedError('Cannot remove meta user instances', None)

или что-то вроде:

    try:
        obj.delete()
        return JsonResponse({})
    except ProtectedError as e:
        return self.status_msg(e[0], status=405) 

Взгляните на эти примеры

...