Speichern von Bildern in DB mit Django-Modellen

9

Ich verwende Django zum Erstellen eines Webdienstes und möchte, dass dieser Webdienst Bilder zurückgibt. Ich entscheide mich für die grundlegende Architektur meines Web-Service. Was ich nach dem Stolpern auf Google zum Schluss kam, ist:

  1. Ich sollte Bilder in DB speichern, nachdem ich sie in das Base64-Format kodiert habe.
  2. Übertragen der Bilder wäre einfach, wenn direkt Bases64 decodierte Zeichenfolge übertragen wird.

Aber ich habe ein Problem, wie kann ich Base64 codierte Zeichenfolge in DB mit Django-Modellen speichern? Wenn Sie einen Fehler in meiner grundlegenden Architektur sehen, bitte leiten Sie mich.

Ich bin neu in Web Services und Django

Danke !!

    
Mayank Jain 11.09.2013, 17:34
quelle

2 Antworten

6

Einige Leute sagen, dass die Verwendung von DB zum Speichern von Bildern keine gute Idee ist, aber das stimmt nicht. Mein Rat ist, Django mit AppEngine Blobstore Service auf diese Weise zu verwenden:

Erstellen Sie zuerst ein Django Custom Storage (oder wählen Sie einen anderen aus.) wie dieser ):

%Vor%

Dieser benutzerdefinierte Speicher kann Django-Bilder empfangen, sie in Base64-Zeichenfolgen konvertieren und sie an Ihre AppEngine Blobstore-Dienstanwendung senden (z. B. über xmlrpc).

Erstellen Sie dann ein Django Image-Modell:

%Vor%

Dann müssen Sie eine AppEngine-Anwendung erstellen, um Django-Anforderungen zum Speichern von Bildern zu empfangen, Base64-Zeichenfolgen in rohe umzuwandeln und sie in einem Blob zu speichern. Zum Beispiel:

%Vor%

Bereitstellen eines Blobs

Der Schlüssel ist die Funktion get_serving_url . Aus Google-Dokumenten:

  

Wenn Sie Bilder liefern, effizienter und potenziell   Die kostengünstigste Methode besteht darin, get_serving_url mit der App Engine zu verwenden   Bilder API statt send_blob. Die get_serving_url Funktion lässt   Du servierst das Bild direkt, ohne deine App durchlaufen zu müssen   Engine-Instanzen.

Wenn Sie Bilder mit AppEngine bereitstellen, können Sie schließlich die großartige Funktion zur Größenanpassung und zum Zuschneiden von Bildern verwenden (siehe Dokumentation der Funktion get_serving_url ), zum Beispiel:

  

// Größe des Bildes auf 32 Pixel (beibehaltenes Seitenverhältnis)    Ссылка

Ich hoffe, es hilft. Viel Glück!

    
Cartucho 13.09.2013 04:37
quelle
0

Sie können Bilder im bytea-Feld speichern.

Der bytea-Datentyp ermöglicht das Speichern von Binärzeichenfolgen. Link zur Postgres-Dokumentation

Die frühere Version von Django unterstützt kein Bytea-Feld, also habe ich diese Bibliothek namens djorm-ext-pgbytea :

    
Mingyu 11.09.2013 18:45
quelle

Tags und Links