0

まず、私はコーディングに非常に慣れておらず、独学なので、モデル / ビュー / DOM は耳が聞こえません (しかし、喜んで学びます!)。

そこで、画像をブロブ (BlobProperty) としてデータベースに保存し、それらを提供しようとしました。

関連するコード: (読みやすくするために大量に取り出しました)

class Mentors(db.Model):
    id = db.StringProperty()
    mentor_id = db.StringProperty()
    name = db.StringProperty()
    img_file = db.BlobProperty()


class ImageHandler (webapp2.RequestHandler):
  def get(self):

    mentor_id=self.request.get('mentor_id')
    mentor = db.GqlQuery("SELECT * FROM Mentors WHERE mentor_id = :1 LIMIT 1", mentor_id)
    if mentor.img_file:
       self.response.headers['Content-Type'] = "image/jpg"
       self.response.out.write(mentor.img_file)
    else:
       self.error(404)


application = webapp2.WSGIApplication([
    routes.DomainRoute('medhack.prebacked.com', medhack_pages),
    webapp2.Route(r'/', handler=HomepageHandler, name='home-main'),
    webapp2.Route(r'/imageit', handler=ImageHandler, name='image-handler')
    ],
        debug=True)


class MedHackHandler(webapp2.RequestHandler):
    def get(self, url="/"):
        # ... bunch of code to serve template etc.

        mentors_events = db.GqlQuery("SELECT * FROM Mentors_Events WHERE event_id = :1 ORDER BY mentor_type DESC, mentor_id ASC", current_event_id)
        mentors = mentors_events


html:

{% for m in mentors %}
        #here 'mentors' refers to mentors_event query, and 'mentor' refers to the mentors table above.
        <img src="imageit?mentor_id={{m.mentor.mentor_id}}" alt="{{m.mentor.name}} headshot"/>
{% endfor %}

imageit が実際には呼び出されていないか、パスが間違っているかのようです...わかりません。非常に多くの試みと失敗。

私が試したが理解できないリソース:
https://developers.google.com/appengine/articles/python/serving_dynamic_images usfcomputerscience/storeing-and-serving-images


これは非常に近いように見えましたが、実装方法がわかりません。「ダミー用」の翻訳が必要です。 Google App Engine で Blobproperty イメージをロードするには?

4

2 に答える 2

1

ハンドラーでは、から ID を取得していますself.request.get('mentor_id')。ただし、テンプレートで画像 URL を設定したimageit?key=whateverため、パラメータは「mentor_id」ではなく「key」です。どちらかを選択してください。

于 2013-07-11T19:29:31.563 に答える