Seite 1 von 1
Django: Mehrere Images anzeigen lassen
Verfasst: Sonntag 5. Juni 2011, 16:46
von SancezZ
Hallo Ich probiere gerade bischen mit Django herrum.
Ich habs momentan hinbekommen Bilder/Images in meine Datenbank zu Laden und kann mir auch ein Image ausgeben lassen.
Vielleicht kann mir Jemand helfen, wie ich mir alle Bilder anzeigen lassen kann.
Code: Alles auswählen
#models.py
from google.appengine.ext import blobstore
from google.appengine.ext import db
class PhotoItem(db.Model):
name = db.StringProperty()
photo = blobstore.BlobReferenceProperty()
Code: Alles auswählen
#views.py
def show_photo(request):
item = PhotoItem.all()[0]
key = str(item.photo.key())
url = images.get_serving_url(key)
template = 'show.html'
data = { 'photo':url}
return render_to_response (template ,data,RequestContext(request))
mfg SancezZ
Re: Django: Mehrere Images anzeigen lassen
Verfasst: Sonntag 5. Juni 2011, 18:56
von /me
SancezZ hat geschrieben:Vielleicht kann mir Jemand helfen, wie ich mir alle Bilder anzeigen lassen kann.
Code: Alles auswählen
#views.py
def show_photo(request):
item = PhotoItem.all()[0]
[...]
Du solltest nicht nur die Daten für ein Bild abrufen, sondern alle. Mit dem "[0]" schränkst du explizit die Menge ein.
Dem Template kannst du dann statt wie bisher nur einen Wert die komplette Liste übergeben. Ich setze den Umgang mit Listen in Python und in Django-Templates jetzt mal als bekannt voraus.
Re: Django: Mehrere Images anzeigen lassen
Verfasst: Sonntag 5. Juni 2011, 20:45
von SancezZ
Ja stimmt hab da wohl bischen aufn schlauch gestanden ...
Jetzt Klappt es auch ^^
Danke für den Denkanstoß
Re: Django: Mehrere Images anzeigen lassen
Verfasst: Montag 6. Juni 2011, 14:29
von SancezZ
Nun möchte ich die gespeicherten Bilder verändern.
Mein Gedankengang aus der url ein Imagefile zu generieren um dies zu verändern.
Code: Alles auswählen
img = images.Image(url)
img.resize(width=50, height=80)
gibt es so eine möglichkeit mir dies im Template anzeigen zu lassen
bzw gibs eine Funktion um wieder zurück auf eine url zu kommen?
Re: Django: Mehrere Images anzeigen lassen
Verfasst: Montag 6. Juni 2011, 14:55
von deets
@SancezZZ
So geht das nicht. Was du brauchst ist doch einfach nur genau derselbe code, wie du ihn schon zum ausliefern eines konkreten Bildes hast. Damit holst du doch schon ein Bild aus der Datenbank - und genau das willst du jetzt doch auch machen.
Mit dem Bild kannst du dann tun und lassen was du willst.
Re: Django: Mehrere Images anzeigen lassen
Verfasst: Montag 6. Juni 2011, 15:31
von SancezZ
Du meinst diesen Code
Code: Alles auswählen
def show_photo(request):
item = PhotoItem.all()[0]
key = str(item.photo.key())
url = images.get_serving_url(key)
...
Damit hole ich mir ja das Bild bzw die Url aus der Datenbank.
Ich hab hier ja in diesem Sinne noch kein Bild mit diesem ich rumspielen kann ...
Re: Django: Mehrere Images anzeigen lassen
Verfasst: Montag 6. Juni 2011, 15:36
von deets
@SanceZZ
Aber du hast doch auch code, der ein Bild wirklich *darstellt*, also der aufgerufen wird, wenn die URL die aus "images.get_serving_url(key)" rausfaellt dann vom Browser aufgerufen wird.
Re: Django: Mehrere Images anzeigen lassen
Verfasst: Montag 6. Juni 2011, 16:04
von SancezZ
Glaube Nein
aber der Code der das image darstellt wäre ja dann dieser
Code: Alles auswählen
img = images.Image(url)
img.resize(width=50, height=80)
Aber selbst dann kann ich es ja keinen Template Übergeben/Anzeigen ohne es in die Datenbank zu packen
Re: Django: Mehrere Images anzeigen lassen
Verfasst: Montag 6. Juni 2011, 16:14
von deets
Ich glaube wir reden hier aneinander vorbei.
Du hast doch eine Seite gerendert, auf der Links zu allen moeglichen deiner PhotoItems sind. Wozu sind denn diese einzelnen Links gut, und wann benutzt du PhotoItem.photo?
Re: Django: Mehrere Images anzeigen lassen
Verfasst: Montag 6. Juni 2011, 16:46
von SancezZ
Wahrscheinlich macht mir wiedermal der BlobStore von google bzw die Hitze alles zu schwer ^^
Ich weis gerade überhaupt nicht was du für eine Seite meinst
Re: Django: Mehrere Images anzeigen lassen
Verfasst: Montag 6. Juni 2011, 16:52
von deets
Na, der Sinn & Zweck deiner ganzen Uebung hier zu Beginn war doch, eine Seite mit links zu oder gleich den Images selbst zu rendern. Dieses "show_photo". Was kommt denn da genau raus?
Oder nochmal anders: gibt es *irgendwo* in deinem Programm eine URL die man aufrufen kann, und dann wird das *BILD* dargestellt, also wirklich das Bild, mit bunten Pixeln und so?
Re: Django: Mehrere Images anzeigen lassen
Verfasst: Montag 6. Juni 2011, 17:19
von SancezZ
Ich sprech jetzt erstmal von dem einfachen bsp ohne schleifen etc
Die show_photo sendet mit ein "object"/die URL davon, was in meiner DB drin liegt an meine show.html
und diese zeigt mir das Bild dann an
Code:show.html
Ich glaub ich weis so ungefair wo der fehler liegt.
ich benutze Blobstore.BlobReferencesProperty(9 um files zu Speichern
Das was ich bisher herrausgefunden hab bzw die meisten sagen ist,
es ist mit db.blobProperty() einfacher
nur hab ich gerade keine ahnung wie ich dies verwende ^^
Re: Django: Mehrere Images anzeigen lassen
Verfasst: Montag 6. Juni 2011, 18:08
von deets
Ah, ok. Du kuemmerst dich also selbst gar nicht darum.
Aber du hast doch nen key, warum kannst du denn nicht PhotoItem.get(key) machen? Oder sowas aehnliches, wie auch immer Django das macht.
Und dann hast du dein PhotoItem mit dem Blob, da muss man doch an die Binaerdaten rankommen. Nur noch mit Image.load(StringIO(data)) versehen, und fertig.
Re: Django: Mehrere Images anzeigen lassen
Verfasst: Montag 6. Juni 2011, 18:42
von SancezZ
An key ids etc komme ich ohne größere Probleme herran
das reine Anzeigen der Bilder Funktioniert
Nun möchte ich diese halt verändern
Ich kann mir ja wie oben schon beschrieben aus der url ein image generieren um dies zu bearbeiten.
Um jetzt wieder das Problem zu haben, dass ich nicht weis wie ich es mir ausgeben/anzeigen lassen kann
habe schon überlegt es in die DB zu packen aber das wäre dann zuviel des guten ^^
Re: Django: Mehrere Images anzeigen lassen
Verfasst: Montag 6. Juni 2011, 20:39
von deets
Noe, ist es nicht. Das Bild zu bearbeiten ist wahrscheinlich relativ teuer, also macht man das nur einmal, und speichert es in einer DB. Wuerde ich zumindest so machen.
Re: Django: Mehrere Images anzeigen lassen
Verfasst: Donnerstag 9. Juni 2011, 08:44
von SancezZ
Ich danke allen die sich auch wegen mir den Kopf zerbrochen haben.
Mein aktuelles Testprojekt läuft
http://uploadsancezz.appspot.com/
sieht zwar nicht schön aus aber es funktioniert ^^
Hab jetzt anstelle des
dies
genommen
und Images aus Django herraus Anzeigen geht auch recht einfach mit
Wollte jetzt eigentlich noch eine downloadFunktion einbauen aber da weis ich noch nicht wies geht.