При использовании представлений на основе классов вы можете использовать UserPassesTestMixin
следующим образом ( документы ):
from django.contrib.auth.mixins import UserPassesTestMixin
class MyView(UserPassesTestMixin, View):
def test_func(self):
return self.request.user.email.endswith('@example.com')
В документах также указывается:
Кроме того, вы можете установить любой из параметров AccessMixin, чтобы настроить обработку неавторизованных пользователей
Однако не приводится пример синтаксиса, как это сделать. Например, как бы установить raise_exception
и permission_denied_message
, чтобы аутентифицированные пользователи получали ошибку исключения, а не 403?
Это не работает, поскольку пользователям по-прежнему возвращается ошибка 403:
class MyView(UserPassesTestMixin, View):
raise_exception = True
permission_denied_message = 'You have been denied'
def test_func(self):
return self.request.user.email.endswith('@example.com')