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
тоже вызывает исключение; так почему то исключение обрабатывается, а это - нет?