Как установить django upload_handler в админке? - PullRequest
6 голосов
/ 17 февраля 2010

Я пытаюсь сделать индикатор загрузки django в админке django. Приложение является лишь небольшой частью проекта, поэтому я не хочу устанавливать пользовательский обработчик загрузки в settings.py.

Upload_handler может быть установлен с помощью request.upload_handlers.insert(0, UploadProgressHandler(request)), но не внутри add_view административного класса django. Ответ это исключение:

Если вы попытаетесь изменить request.upload_handlers после чтения из request.POST или request.FILES Django выдаст ошибку.

Я также пытался сделать это с декоратором поверх add_view, но тогда я не знаю, как получить доступ к request.upload_handlers.

Может ли кто-нибудь мне помочь?

1 Ответ

1 голос
/ 08 августа 2012

Посмотрите на источник для декоратора, который поставляется с приложением администратора:

def staff_member_required(view_func):
    """
    Decorator for views that checks that the user is logged in and is a staff
    member, displaying the login page if necessary.
    """
    @wraps(view_func)
    def _checklogin(request, *args, **kwargs):
        if request.user.is_active and request.user.is_staff:
            # The user is valid. Continue to the admin page.
            return view_func(request, *args, **kwargs)

Декоратор «оборачивает» исходное представление, чтобы вы могли проверить аргумент запроса перед вызовом исходного представленияФунк с ним.

...