Ich versuche, ein Datei-Upload-System in Django Rest Framework arbeiten zu lassen.Serialisierung von hochgeladenen Dateidaten Django Rest Framework
Die Dateien, die ich hochladen möchte, sind .gpx-Dateien, die benutzerdefinierte XML-Dateien sind. Ich möchte die Dateien nicht in der Datenbank speichern, sondern möchte Informationen aus ihnen extrahieren und diese dann in mein Modell eingeben.
Ich habe eine Funktion, die eine temporäre Datei und extrahiert dann die Informationen und erstellt dann die Modellelemente nach Bedarf. Ich möchte die Datei überprüfen, bevor sie hochgeladen und an diese Funktion übergeben wird.
Wie soll ich das tun?
Der Datei-Upload erfolgt derzeit wie in der Dokumentation (siehe unten), die eine generische APIView und einen Put-Befehl enthält. Das funktioniert einwandfrei. Ich möchte nur wissen, wie die Gültigkeit dieser Datei vor dem Hochladen überprüft werden kann.
views.py
class FileUploadView(views.APIView):
parser_classes = (FileUploadParser,)
def put(self, request, filename, format=None):
up_file = request.data['file']
SaveGPXtoModel(up_file, request.user)
return Response(status=204)
Sollte die API tun, um diese Kontrollen oder sollte es die Datei übernehmen bereits validiert?
In Django würden diese Prüfungen durch das Formular behandelt werden, sollte ich einen Serializer verwenden, um diese Prüfungen durchzuführen?
Wenn ein Serialisierer der Weg ist, ist es dann wichtig, dass es eine Datei als Eingabe und verschiedene Datenpunkte als Ausgabe gibt?
Benutzereingaben immer explizit validieren. –
Und nicht auf die Dateierweiterung entweder verlassen. Es wäre zu einfach, etwas Schädliches in '.gpx' zu ändern –