0

わかりました。最初に、これが Python 経由の Google App Engine であることを述べたいと思います。

誰でも、

これらは、問題が発生している私のハンドラー/ルーティングです。コンテキストと詳細については、以下をお読みください。

class GetImage(MainHandler):
    def get(self):
        img = db.get(self.request.get("entity_id"))
        self.response.out.write(img.image)

class Profile(MainHandler):
    def get(self, profile_name):
        current_user = str(self.user.name)
        profile_name = current_user
        if self.user:
            key='ag5kZXZ-c3VpdGVnYW1lcnINCxIHSW1hZ2VkYhgxDA'
            imgs  = db.GqlQuery("select * from Imagedb WHERE name =:1", current_user)
            for img in imgs:
                key = img.key() # this is the key
            self.render('profile.html', profile_name = self.user.name, current_user = self.user.name, profile_image = key ,username = self.user.name, email = self.user.email, first_name = self.user.first_name, last_name = self.user.last_name, country = self.user.country, prov_state = self.user.prov_state, city_town = self.user.city_town)
        else:
            self.redirect('/register')

class Change_Profile_Image(MainHandler):
    def get(self):
        if self.user:
            self.render('change_profile_image.html', username = self.user.name, firstname=self.user.first_name, current_user = self.user.name)
        else:
            self.render('change_profile_image.html')

    def post(self):
        imagedb = Imagedb(name = self.user.name)
        imageupl = images.resize(self.request.get("img"), 200, 200)
        imagedb.image = db.Blob(imageupl)
        imagedb.put()
        self.redirect('/profile/'+self.user.name)


app = webapp2.WSGIApplication([('/', MainPage),
                               ('/register', Register),
                               ('/article', ArticlePage),
                               ('/profile/([^/]+)', Profile),
                               ('/login', Login),
                               ('/logout', Logout),
                               ('/welcome', Unit3Welcome),
                   ('/games', Games),
                   ('/forum', Forum),
                   ('/media', Media),
                   ('/rank', Rank),
                   ('/review', Reviews),
                   ('/events', Events),
                               ('/alreadyloggedin', AlreadyLoggedIn),
                   ('/change_profile_image', Change_Profile_Image),
                               ('/img', GetImage)],
                              debug=True)

さて、ここで物事が狂ってしまいます。Profile クラスを get(self) に変更し、プロファイル クラスのルーティングから正規表現を削除すると、イメージは完全に機能します。固有のプロファイルにルーティングする、つまり profile_name を Profile ハンドラーに渡し、URL をそのプロファイルにマップするとすぐに、GetImage ハンドラーのすべての機能が失われます。ソースコードを見ると、何も変わっていません。画像は通常どおりテンプレートに渡されます。

ここで何が起こっているのか誰にもわかりませんか?とても感謝しております。事前にどうもありがとうございました。うまくいけば、私の知識が皆さんに追いつき、すぐに質問に答えることができます:p.

4

1 に答える 1

2

テンプレートの (簡略化された) バージョンを見ずに質問に答えるのは困難です。

コードには、何が起こっているのかわかりにくい奇妙な要素がいくつかあります。これをコメントとしてフォーマットするのは難しいので、少なくとも表示できるように、回答として入れています。

  • getプロファイル ハンドラーのリクエストで、現在のユーザーが存在することを確認する前に、現在のユーザーを取得しようとしますまたprofile_name、 に割り当てるときに要素を完全に破棄profile_nameするだけなcurrent_userので、プロファイル ページで現在のユーザー以外のプロファイル イメージを取得することはありません。

ここで profile_name を使用しますが、決して使用しないでください。

   def get(self, profile_name):
        current_user = str(self.user.name)
        profile_name = current_user
  • ループしますimgsが、毎回キーを置き換えます。つまり、複数の画像を返す場合、これが発生したことを知ることができず、クエリの最後の画像以外を上書きします。すべきことの 1 つは、それが真実であるかどうかを確認するためのチェックを追加することですimgs。これにより、何らかの結果が得られたかどうかを確認できます。これにより、画像ハンドラーが失敗した理由を説明できる可能性があります (方法は想像できませんが)。

最後に、ソースをチェックして、テンプレートで実際に要求されている画像の URL を確認します。

于 2012-07-22T06:07:38.463 に答える