根据用户ID创建永久唯一链接

时间:2012-06-29 05:56:23

标签: python google-app-engine jinja2 user-profile webapp2

  

可能重复:
  create unique profile page for each user python

我正在使用谷歌appengine与python和jinja2,并试图给我的应用程序中的每个用户一个唯一的URL到他们的个人资料页面,任何人都可以访问,无需登录。这是我的代码到目前为止:

class ProfilePage(webapp2.RequestHandler):
  def get(self, profile_id):
    user = User.get_by_id(profile_id)
    #profile_id = some unique field
    if user:
       #Get all posts for that user and render....
       theid = user.theid
       personalposts = db.GqlQuery("select * from Post where theid =:1 order by created desc limit 30", theid)
    else:
        personalposts = None
    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)

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

当我尝试测试它时,它只给我一个404错误。我想如果代码是正确的,我可能会使用错误的测试URL。例如,如果这是他们的OpenID ID:我如何测试它我尝试只输入www.url.com/profile/https://www.google.com/accounts/o8/id?id=AItOawlILoSKGNwU5RuTiRtXug1l8raLE45g-56只是id =“this part”就是我放的所以我会:

url = www.url.com/profile/AItOawlILoSKGNwU5RuTiRtXug1l8raLE45g-56

这就是我尝试过的,但它并没有完全奏效。在此先感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您正在使用的网址(www.url.com/profile/ AItOawlILoSKGNwU5RuTiRtXug1l8raLE45g-56 )网址的最后一部分是实体的完整密钥,而在您使用的代码中要加载它的实体ID(使用get_by_id())。

答案 1 :(得分:1)

试试这个正则表达式:

r'^/profile/\w*?-(\d+)$'

虽然我也必须告诉你这是一个非常糟糕的主意!