Найти - Пользователи
Полная версия: где перехватывать исключение
Начало » Django » где перехватывать исключение
1
django2014
По умолчанию декоратор @method_decorator перебрасывает на страцицу регистрации. Требуется другое поведение: выдать страницу с разъяснениями (либо статическая с правилами, либо raise Http404(пояснения) … )
class TodoUpdate(UpdateView):
    model = Todo
    form_class = TodoForm
    @method_decorator(permission_required('todo.change_todo'))
    def dispatch(self, *args, **kwargs):
        return super(TodoUpdate, self).dispatch(*args, **kwargs)
Как можно изменить это поведение. Может есть какой-то параметр url? Но, я его не нашел

Или, такой вариант, удалось заставить генерировать исключение
class TodoUpdate(UpdateView):
    model = Todo
    form_class = TodoForm
    @method_decorator(permission_required('todo.change_todo',raise_exception=True))
    def dispatch(self, *args, **kwargs):
        return super(TodoUpdate, self).dispatch(*args, **kwargs)
 
но где его можно перехратить совсем не понятно.
FishHook
Да напишите свою функцию и не парьтесь, там 10 строк максимум

Как то так, не проверял
def permission_required(url_name):
    def decorator(func):
        def wrapper(*args, **kwargs):
            request = args[0]
            if not request.user.is_authenticated():
                return HttpResponseRedirect(reverse(url_name))
            return func(*args, **kwargs)
        return wrapper
    return decorator
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB