我正在使用谷歌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
这就是我尝试过的,但它并没有完全奏效。在此先感谢您的帮助!
答案 0 :(得分:1)
您正在使用的网址(www.url.com/profile/ AItOawlILoSKGNwU5RuTiRtXug1l8raLE45g-56 )网址的最后一部分是实体的完整密钥,而在您使用的代码中要加载它的实体ID(使用get_by_id())。
答案 1 :(得分:1)
试试这个正则表达式:
r'^/profile/\w*?-(\d+)$'
虽然我也必须告诉你这是一个非常糟糕的主意!