2017-02-14 3 views
1

Ich bin neu in Django und mache ein kleines Projekt, bei dem sich der Benutzer bei einer von Django betriebenen Website anmeldet und dann einige Bilder hochladen kann. Für diese Bilder muss eine Vorverarbeitung durchgeführt werden, bevor sie von den Remote-Diensten verwendet werden können. Was ich tun möchte, ist die Vorverarbeitung auf der Client-Seite durchzuführen, und ich habe etwas Python-Code, der es tut. Ich bin mir jedoch nicht sicher, wie ich Django so einrichten kann, dass der Benutzer ihm Berechtigungen erteilen kann, um Code lokal auszuführen (und einige Dateien im temporären Verzeichnis zu generieren).Lokale Verarbeitung vor dem Hochladen

So zum Beispiel einer meiner Ansicht ist wie folgt:

class UploadImageView(APIView): 
    permission_classes = (IsAuthenticated,) 
    authentication_classes = (JSONWebTokenAuthentication,) 

    # Create your views here. 
    def post(self, request): 
     image = request.FILES['image'] 
     study = int(request.data.get('study').strip())    

     if image is None: 
      return Response(status=status.HTTP_400_BAD_REQUEST) 

     # Check study ID and Image type exists 
     s = StudyModel.objects.filter(pk=study).first()    
     if s is None: 
      return Response(status=status.HTTP_412_PRECONDITION_FAILED) 
     try: 
      _ = ImageModel.objects.create(path=image, study=s) 
     except: 
      return Response(status=status.HTTP_417_EXPECTATION_FAILED) 

     return Response(status=status.HTTP_200_OK) 

Jetzt derzeit, muss der Benutzer einen Code lokal manuell dieses transformierte Bild zu erzeugen, laufen und dann den Rest API aufrufen, um es zu laden . Was schön wäre, ist, dass der Benutzer das Rohbild auswählt, ein Code es lokal transformiert und dann das transformierte Bild hochlädt.

Antwort

1

Das war in der Vergangenheit mit Hilfe von Java-Applets durchaus möglich. Tatsächlich habe ich eines der ersten Applets dafür gebaut. Es könnte Bilder in der Größe ändern oder jede Datei vor dem Update komprimieren, aber ich schweife ab. Heutzutage werden Applets in Browsern nicht häufig unterstützt.

Sie haben die Möglichkeit, einen von mehreren Javascript-Datei-Uploadern zu verwenden, die das Laden eines Bildes in eine Zeichenfläche erlauben. Siehe hierzu excellent tutorial on MDN zur Verwendung der Zeichenfläche. Diese QA erläutert, wie ein Bild in den Canvas geladen wird.

1

Das ist nichts, was Sie tun können. Django-Code läuft auf dem Server. Der einzige Code, den Sie lokal ausführen können, ist Javascript im Browser.

+0

Ok, also muss ich eine Desktop-App erstellen, die mit meiner Django-App kommuniziert, denke ich .... – Luca

Verwandte Themen