Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 2, 2014 14:25:04

django2014
Зарегистрирован: 2014-06-29
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

где перехватывать исключение

По умолчанию декоратор @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)
 
но где его можно перехратить совсем не понятно.

Отредактировано django2014 (Авг. 2, 2014 14:29:28)

Офлайн

#2 Авг. 2, 2014 15:02:15

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

где перехватывать исключение

Да напишите свою функцию и не парьтесь, там 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



Отредактировано FishHook (Авг. 2, 2014 15:03:54)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version