Wie verwende ich Django, Sorl-Thumbnail, Memcached und S3 zusammen?

Ich habe ein Projekt, in dem ich anfangen muss, dynamisch skalierte Miniaturansichten von vom Benutzer hochgeladenen Bildern zu erstellen, wo ich zuvor einige speziell dimensionierte erzeugt hatte. Ich habe ein vorhandenes Modell, das ein Bild darstellt, das so aussieht:

class Image(models.Model):
  original = models.URLField()
  small = models.URLField()
  medium = models.URLField()
  large = models.URLField()

Jeder von diesen ist mit einer URL zu dem jeweiligen Bild in S3 ausgefüllt. Zum Zeitpunkt des Uploads werden alle Versionen erstellt (tatsächlich kurz danach über eine geplante Aufgabe), in S3 gespeichert und dann im Modell festgelegt. In Zukunft benötigt unser Design viele verschiedene Größen für jedes Vorschaubild, daher ist es nicht praktisch, alle in der Datenbank zu speichern. Ich möchte einfach behaltenoriginal und erledigen den Rest on-the-fly in den Vorlagen.

Also hier komme ich hinsorl-thumbnail. Es scheint beabsichtigt zu sein, um zu tun, was ich will, aber ich bin irgendwie verloren, wie es funktionieren soll (es ist nicht im Moment). Als Test habe ich eine grundlegende Ansicht / Vorlage erstellt, die einige Bilder auflistet und versucht, sie als Miniaturansicht anzuzeigen, ähnlich wie im Tutorial:

{% for img in image_set %}
  {% thumbnail img.original "180x180" crop="center" format="PNG" as im %}
  <img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">
  {% endthumbnail %}
{% endfor %}

Das führt dazu, dass eine URL für die Datei generiert wirdcache/84/8f/848fb078f2e8d35aecd92150c6fa6843.png (welche 404s). Ich bin nicht sicher, ob ich verstehe, wo diese Datei gespeichert werden soll. Ich gehe davon aus, dass es in der S3-Datei zieht und dann die Miniaturansicht erstelltirgendwo, aber ich bin nicht sicher, wo das ist und wo ich es servieren soll. Dies ist alles im Moment auf dem lokalen Devserver, der memcached verwendet (in dem ich sehen kann, dass Cache-Einträge gesetzt werden). PIL ist in meiner Umgebung mit JPEG / PNG-Unterstützung installiert.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage