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:
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 !!
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!
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