2010-02-17 17 views
6

Estoy tratando de crear una barra de progreso de carga de django dentro del administrador de django. La aplicación es solo una pequeña parte del proyecto, por lo tanto, no quiero configurar el controlador de carga personalizado en settings.py.Cómo configurar django upload_handler en admin?

El upload_handler se puede establecer con request.upload_handlers.insert(0, UploadProgressHandler(request)) pero no dentro de add_view de la clase de administración django. La respuesta es la siguiente excepción:

Si intenta modificar request.upload_handlers después de leer desde request.POST o request.FILES Django lanzará un error.

también intenté hacer esto con un decorador sobre el add_view pero luego no sé cómo acceder a la request.upload_handlers.

¿Alguien me puede ayudar?

Respuesta

1

Tener un vistazo a la fuente para el decorador que viene con la aplicación de administración:

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) 

El decorador 'envuelve' la vista original, de modo que son capaces de revisar la solicitud arg antes de llamar a la vista func originales con eso.

+0

Para referencia rápida, aquí está el módulo mencionado: https://github.com/django/django/blob/1.4.10/django/contrib/admin/views/decorators.py –