Django UserPassesTestMixin вызывает необработанное исключение

Я использую UserPassesTestMixin в одном из моих представлений. Он работает нормально, но каждый раз, когда пользователь не проходит тест (test_func возвращает False), на сервере возникает исключение:

Forbidden (Permission denied): /m/chats/8/
Traceback (most recent call last):
  ...
  .../django/contrib/auth/mixins.py", line 48, in handle_no_permission
    raise PermissionDenied(self.get_permission_denied_message())
django.core.exceptions.PermissionDenied: Sorry, you can't access this chat.
[11/Apr/2022 11:53:04] "GET /m/chats/8/ HTTP/1.1" 403 135

Почему он не показывает только последнюю строку? Как ошибка 404 при использовании функции get_object_or_404. И еще, он использует только атрибут permission_denied_message, который я установил для сообщения об исключении, и он не показывается пользователю.

Я знаю, что могу переопределить метод handle_no_permission, но есть ли лучший способ? Почему это вообще происходит? get_object_or_404 тоже вызывает исключение; так почему то исключение обрабатывается, а это - нет?

Вернуться на верх