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) 并从配置文件类的路由中删除我的 reg 表达式,我的图像就可以完美地工作。一旦我路由到唯一的配置文件,即将 profile_name 传递到 Profile 处理程序并将 URL 映射到该配置文件,我就失去了 GetImage 处理程序的所有功能。当我查看源代码时,没有任何改变。图像仍照常传递到模板中。

有谁知道这里发生了什么?我真的很感激。非常感谢您提前。希望我的知识能赶上你们,我很快就会回答问题:p。

4

1 回答 1

2

如果没有看到模板的(简化)版本,很难回答您的问题。

您的代码中还有一些奇怪的元素使您很难判断发生了什么。很难将其格式化为评论,因此我将其作为答案,这样您至少可以看到它。

  • 在您get的配置文件处理程序中的请求中,您尝试在检查当前用户是否存在之前获取当前用户。当您分配给时,您也只是完全丢弃了该profile_name元素,因此除了个人资料页面上的当前用户之外,您永远不会获得任何人的个人资料图像。profile_namecurrent_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 回答