2011-01-14 3 views
0

Ich versuche, allgemeine Bildanzeige Klasse, die erhält zwei Parameter, Schlüssel, und "Spalte Standortinfo in der Entität" von URL und Rückgabe und Anzeige angegebenen Bild von Blob geliefert. Wenn Sie wissen, was ich falsch mache, bitte geben Sie mir einen Hinweis.Google App Engine (Python): Wie wird eine Spalte in der Entität mithilfe des URL-Arguments angegeben?

Ich habe Datenspeicher "item" wie unten,

Key | Bildindex | image1 | image2 | image3 |

und Ich wünsche Bild mit der URL wie unten,

http://stackoverwlow.com/image/ {key}/{Image_N}

ich URL-Handler in der Haupt wie unten,

def main(): 
application = webapp.WSGIApplication(
     [('/', MainPage), 
    ('/image/([^/]+)/([^/]+)', imageDisplay), 
    ], debug=True) 
wsgiref.handlers.CGIHandler().run(application) 

und

gemacht

Ich machte imageDisplay-Klasse wie unten,

from google.appengine.ext import db 
from google.appengine.ext import webapp 

class imageDisplay(webapp.RequestHandler): 

    def get(self, _key, _size): 
     image = db.get(_key) 
     self.response.headers['Content-Type'] = 'image/jpg' 
     self.response.out.write(image._size) 

Aber, wenn ich diesen Code versuchen, kehrt es Fehler folgen,

globalen Namen ‚image_size‘ nicht

definiert ist

Wenn ich sollte, welches Bild in der Einheit angeben angezeigt, Es klappt. So sind die Daten da.

self.response.out.write(image.image3) 

Meine Frage ist, wie man "_size" von erhaltenem Wesen "Bild" spezifiziert?

Vielen Dank im Voraus.

Mit freundlichen Grüßen

Antwort

0

Sie müssen das Attribut programmatisch holen, wie folgt aus:

self.response.out.write(getattr(image, size)) 

Da Sie Ihre Werte wie ein Array sind Adressierung, sollten Sie wahrscheinlich nur ein verwenden, aber: Verwendung eine db.ListProperty (db.Blob), stattdessen!

+0

Hallo Nick, self.response.out.write (getattr (Bild, Größe)) Werke als ich erwartet hatte! Vielen Dank. Ich habe versucht, herauszufinden, wie Sie db.ListProperty (db.Blob) verwenden. Aber, wusste nicht, wie es angewendet werden kann. In jedem Eintrag sind mehrere Bilder als Blob gespeichert. Also frage mich, wie man auswählt, welches Bild verwendet werden soll. ,, – soabe

+0

Verwenden einer Python-Liste, wie sonst auch. Es ist eine viel bessere Wahl als die Verwendung mehrerer Eigenschaften. –