Django - PermissionRequiredMixin - Возвращать 'permission_denied_message' в текущем представлении, вместо 403 страницы?
Django version 3.0.5
Я хочу использовать PermissionRequiredMixin
в моем представлении для отображения
баннерное сообщение так же, как я бы использовал SuccessMessageMixin
.
Например, если пользователь пытается удалить объект, а у него нет прав,
permission_denied_message
по существу будет рассматриваться как сообщение об ошибке и
отображается в текущем представлении как баннерное сообщение.
Возможно ли это вообще?
код, который у меня сейчас есть, не работает - он всегда перенаправляет на страницу 403. см. ниже:
class DocDeleteView(PermissionRequiredMixin, SuccessMessageMixin, DeleteView):
model = SlateDoc
success_url = reverse_lazy('slatedoc-list')
success_message = "SlateDoc was deleted!"
permission_required = ('slatedoc.delete_slatedoc')
raise_exception = True
permission_denied_message = "Permission Denied"
def delete(self, request, *args, **kwargs):
if self.has_permission() is False:
messages.error(self.request, self.permission_denied_message)
else:
self.object = self.get_object()
self.object.soft_delete()
messages.success(self.request, self.success_message)
return HttpResponseRedirect(self.get_success_url())