Di sini saya mendapatkan tampilan Django yang biasanya mengarahkan saya ke Settings.LOGIN_URL jika pengguna tidak memiliki izin yang diperlukan tetapi masalahnya adalah selalu menampilkan halaman 403 FORBIDDEN. url yang ditentukan di Settings.LOGIN_URL adalah 'accounts/login/'.

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())

Dan saya mengubah ini ke tampilan berbasis fungsi dan semuanya berfungsi dengan baik, tetapi saya ingin menggunakan tampilan basis kelas karena ini harus melakukan pekerjaan yang sama

0
Alpha 18 Maret 2020, 07:26

1 menjawab

Jawaban Terbaik

Ini terjadi karena pengguna login tetapi dia tidak memiliki izin 'catalog.can_mark_returned'. Ini adalah perilaku indentasi dan tidak perlu mengarahkan pengguna ke halaman login karena dia sudah login.

Jika Anda masih ingin mengubah cara penanganan kesalahan izin, ganti handle_no_permission()--(Django doc) metode

0
JPG 18 Maret 2020, 04:54