Почему django PermissionRequiredMixin не работает так, как предполагалось - PullRequest
0 голосов
/ 18 марта 2020

Здесь у меня есть Django представление, которое обычно перенаправляет меня в Settings.LOGIN_URL, если у пользователя нет необходимых разрешений, но проблема в том, что он всегда отображает страницу 403 FORBIDDEN. URL-адрес, определенный в Settings.LOGIN_URL, представляет собой «account / login /». 1001 *

class LibrairianListView(PermissionRequiredMixin, View):
model = BookInstance
template_name = 'catalog/librairian_list_borrowed.html'
permission_required = 'catalog.can_mark_returned'

def get_queryset(self):
    return BookInstance.objects.filter(status__exact='o').order_by('due_back')

def get_context_data(self, **kwargs):
    print(self.raise_exception)
    context = {}
    context['bookinstance_list'] = self.get_queryset()
    return context

def get(self, request, *args, **kwargs):
    return render(request, self.template_name, self.get_context_data())

И я изменил это на функциональное представление, и все работает нормально, но я хотел использовать базовое представление класса, так как это должно сделать ту же работу

1 Ответ

0 голосов
/ 18 марта 2020

Это произошло потому, что пользователь вошел в систему, но у него нет разрешения 'catalog.can_mark_returned'. Это поведение с отступом и нет необходимости перенаправлять пользователя на страницу входа , так как он уже вошел в систему.

Если вы по-прежнему sh измените способ обработки ошибки разрешения, переопределить handle_no_permission() - (Django do c) метод

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...