Ich versuche, die Dokumentation zu verstehen Using the Images Python API und ich bin verwirrt darüber, wie man den Schlüssel und den Avatar anzeigen.Wie man ein Bild von blobstore anzeigt?
Die Dokumentation besagt, dass der Handler Image
das Bild aus dem Pfad /img
liefert.
Ich bin verwirrt darüber, was dieser Image
Handler tut. Ich kommentiere unten, wie man es versteht; bitte korrigieren. Danke:
class Image (webapp.RequestHandler):
def get(self):
#get the key of the image "img_id" from datastore
#what is the value of "img_id"? Where does it come from?
#how does the app engine know to get what key for which image?
greeting = db.get(self.request.get("img_id"))
#what is greeting.avatar?
#is it img_id.avatar ?
#I assume "avatar" refers to the "avatar" property in the model
if greeting.avatar:
self.response.headers['Content-Type'] = "image/png"
#does this display the avatar?
#I thought the img tag displayed the avatar
self.response.out.write(greeting.avatar)
else:
self.error(404)
Vielen Dank für Ihre Hilfe.
UPDATE (re: Antwort von Gabi Purcaru)
Nochmals vielen Dank für die klare Antwort. Ich habe eine Abfrage, die die Benutzer Kommentare wie dieser zeigt:
for result in results:
self.response.out.write("<li>")
self.response.out.write("<b>%s</b> %s " % (result.userName, result.userLatestComment))
self.response.out.write("</li>")
self.response.out.write("</ol></body></html>")
so, kopiere ich die Zeile mit dem Image-Tag aus dem MainPage handler
self.response.out.write("<div><img src='img?img_id=%s'></img>" % greeting.key())
und ändern
greeting.key()
zu
result.key()
Ich gehe davon aus, dass dies jetzt den Avatar neben den Benutzer Kommentar anzeigen soll:
for result in results:
self.response.out.write("<li>")
self.response.out.write("<b>%s</b> %s " % (result.userName, result.userLatestComment))
self.response.out.write("<div><img src='img?img_id=%s'></img>" % result.key())
self.response.out.write("</li>")
self.response.out.write("</ol></body></html>")
aber immer noch nicht klar, warum result.key()
ist der Schlüssel des Bildes I angezeigt werden soll?
Der Wert von img_id ist der Datenspeicherschlüssel, der den genauen Speicherort des bestimmten Image-Objekts im Datenspeicher angibt. http://code.google.com/appengine/docs/python/datastore/keyclass.html Wenn Sie einen get mit diesem Schlüssel ausführen, wird die Begrüßung abgerufen, sofern sie vorhanden ist. – kevpie
@kevpie: danke. Wie weiß die App-Engine, welche 'img_id' in diese Zeile gelangt? Gruß = db.get (self.request.get (" img_id "))'? – Zeynel
Dies ist kein Blobstore. Dies ist ein Blob im Datenspeicher. Sie müssen die Dokumentation über Blobstore wirklich sorgfältig lesen. Du verwirrst die beiden Konzepte, fürchte ich. – DocWiki