J'essaie de comprendre la documentation Using the Images Python API et je suis confus sur la façon d'obtenir la clé et afficher l'avatar.Comment afficher une image de blobstore?
La documentation indique que le gestionnaire Image
servira l'image du chemin /img
. Je ne comprends pas ce que fait ce gestionnaire Image
. Je commente ci-dessous comment le comprendre; Corrigez s'il vous plaît. Merci:
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)
Un grand merci pour votre aide.
MISE À JOUR (re: réponse par Gabi Purcaru)
Merci encore pour la réponse claire. J'ai une requête qui affiche les commentaires des utilisateurs comme celui-ci:
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>")
, je copier la ligne avec l'étiquette d'image du MainPage handler
self.response.out.write("<div><img src='img?img_id=%s'></img>" % greeting.key())
et changer
greeting.key()
à
result.key()
Je suppose que, cela devrait maintenant afficher l'avatar à côté du commentaire utilisateur:
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>")
mais toujours pas clair pourquoi result.key()
est la clé de l'image que je veux montrer?
La valeur de img_id est la clé du magasin de données qui spécifie l'emplacement précis de l'objet Image spécifique dans la banque de données. http://code.google.com/appengine/docs/python/datastore/keyclass.html Effectuer un get à l'aide de cette touche récupérera le message d'accueil s'il existe. – kevpie
@kevpie: merci. Comment le moteur de l'application sait-il quel 'img_id' obtenir dans cette ligne' salut = db.get (self.request.get ("img_id")) '? – Zeynel
Ce n'est pas blobstore. Ceci est un blob dans le magasin de données. Vous devez lire attentivement les documents sur Blobstore. Vous confondez les deux concepts dont j'ai peur. – DocWiki