Django PermissionRequiredMixin не работает
Когда я помещаю PermissionRequiredMixin как самый левый параметр, мои запросы перенаправляются на URL входа, даже если запрос исходит от уже аутентифицированного пользователя.
class ExampleViewSet(PermissionRequiredMixin, viewsets.ModelViewSet):
permission_required = ('example.example_view',)
Когда я размещаю PermissionRequiredMixin после ModelViewSet, аутентифицированный пользователь обнаруживается, однако, permission_required игнорируется, и каждый пользователь без разрешения также разрешен. И этот ответ подсказал, что это вызвано размещением параметра, что приводит к первой проблеме.
class ExampleViewSet(viewsets.ModelViewSet, PermissionRequiredMixin):
permission_required = ('example.example_view',)
Как мне решить эту проблему?
Это не проблема. Порядок наследования классов важен. Базовый класс представления должен быть установлен на последней позиции. Миксины по своим позициям могут переопределять некоторые функции представления django. Порядок переопределения функции дочерним классом частично определяется этим порядком. Первый родитель в порядке будет вызван первым. В вашем случае, если вы поставите точку останова в вашем PermissionRequiredMixin, вы увидите, что python не передает в него при вызове вашей страницы
Вы можете прочитать некоторые ссылки как: