2010-02-17 11 views
6

Ich versuche einen Django-Upload-Fortschrittsbalken innerhalb des Django-Admins zu erstellen. Die Anwendung ist nur ein kleiner Teil des Projekts, deshalb möchte ich den benutzerdefinierten Upload-Handler nicht in settings.py einstellen.Wie setze ich django upload_handler in admin?

Der upload_handler kann mit request.upload_handlers.insert(0, UploadProgressHandler(request)) eingestellt werden, aber nicht innerhalb der add_view der django admin Klasse. Die Antwort ist diese Ausnahme:

Wenn Sie versuchen, request.upload_handlers zu ändern, nachdem von request.POST oder request.FILES Django Lesen einen Fehler werfen.

Ich habe auch versucht, über die add_view mit einem Dekorateur dies zu tun, aber dann weiß ich nicht, wie die request.upload_handlers zuzugreifen.

Kann mir jemand helfen?

Antwort

1

Werfen Sie einen Blick auf die Quelle für den Dekorateur, die mit dem Admin-App kommt:

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) 

Der Dekorateur ‚wickelt‘ die ursprüngliche Ansicht, so dass Sie die Anfrage arg zu überprüfen, vor dem Aufruf der ursprünglichen Ansicht func sind in der Lage damit.

+0

Zum schnellen Nachschlagen, hier ist das Modul erwähnt: https://github.com/django/django/blob/1.4.10/django/contrib/admin/views/decorators.py –