使用谷歌应用引擎创建唯一页面时出现404错误

时间:2012-06-30 18:52:09

标签: python google-app-engine url-mapping

我在这里问了一个类似的问题:create permenant unique links based on a user ID但是得不到答案。我试图给我的网站上的每个用户一个独特的个人资料页面。我主要设置它但我一直收到404错误。现在我不确定这是我的处理程序是一个问题,还是我正在做的所有方式。

这是我的应用代码:

app = webapp2.WSGIApplication([('/', MainPage),
                               (r'/profile/(.+)', ProfilePage)])

这是我的ProfilePage处理程序类:

class ProfilePage(webapp2.RequestHandler):
    def get(self, profile_id):
        profileowner = User.get_by_id(profile_id)

        if profileowner:
            #Get all posts for that user and render....
            #theid is their federated_id 
            theid = profileowner.theid
            personalposts = db.GqlQuery("select * from Post where theid =:1 order by created desc limit 30", theid)

            #I collect this so that I can have their username in the top of the page
            global visits
            logout = users.create_logout_url(self.request.uri)
            currentuser = users.get_current_user()
            self.render('profile.html', user = currentuser, visits = visits, logout=logout, personalposts=personalposts)
        else:
            self.redirect("/")

对于我在数据存储区查看器中找到的1201的ID,我一直在输入www.url.com/profile/1201进行测试,这就是我收到404错误。

更新: 现在它正在将我重定向到主页,其中包含Amber建议的更改。

现在当我改变这一行时:

profileowner = User.get_by_id(profile_id)

到此:

profileowner = User.get_by_id(17001)

它正确通过,所以我猜这行不能正确地从URL获取profile_id

1 个答案:

答案 0 :(得分:1)

r'/profile/<profile_id>'

不是有效的正则表达式。你可能想要这样的东西:

r'/profile/(.+)'