2012-06-28 4 views
0

Я использую движок Google для Google в python с движком Jinja2.Создайте уникальную страницу профиля для каждого пользователя python

Это может быть глупое решение, но у меня есть список из нескольких тысяч пользователей, и сейчас они могут получить доступ только к своим страницам профиля и должны войти в систему, чтобы сделать это. Я хотел бы предоставить каждому пользователю уникальный URL-адрес для своей страницы профиля, и мне интересно, как это сделать. Я не уверен, что это сработает, но что-то подобное возможно?

class ProfilePage 
    userlist = GQL query to return all users in the system 
    user = users.get_by_id() 
    for user in userlist: 
     id = user.federated_id 

     posts = GQL query to return all posts by that user 

     self.render('/profile/id', posts=posts) 

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

Мой HTML-адрес для страницы профиля просто отображает имя пользователя, а затем отображает все их последние сообщения.

Update:

Так вот мой текущий код, но я просто получаю сообщение об ошибке 404:

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) 

Как я могу проверить это, я попытался просто входя www.url.com/profile/ https://www.google.com/accounts/o8/id?id=AItOawlILoSKGNwU5RuTiRtXug1l8raLEv5-mZg

Update: идентификатор я извлечения не был их OpenID URL, а приложение конкретный идентификатор, который дается каждому пользователю и таким образом, это правильно использовать

+0

Посмотрите на ответ, который я отправил на очень похожий вопрос на http://stackoverflow.com/questions/11256738/create-permenant-unique-links-based-on -a-user-id – Chris

ответ

1

Простым способом сделать это будет присвоение каждому пользователю уникального идентификатора URL (или использование его имени ключа), таким образом вы можете запросить пользователя по их идентификатору или выполнить запрос на основе уникального свойства идентификатора URL-адреса , Вы также можете использовать их federated_id, если хотите.

Пример:

class User(ndb.Model): 
    unique_identifier = ndb.StringProperty() 
    ... 

class ProfilePage(webapp2.RequestHandler): 
    def get(self, profile_id): 
    #profile_id = key name of user 
    user = User.get_by_id(profile_id) 
    #profile_id = some unique field 
    #user = User.query(User.unique_identifier == profile_id).get() 
    if user: 
     #Get all posts for that user and render.... 


app = webapp2.WSGIApplication([('/', MainPage), 
           ('/profile/<profile_id>', ProfilePage),]) 
+0

, и с этим кодом уникальный сайт профиля останется прежним, если на него посещает другой пользователь (возможно, не вошел в систему)? – exployre

+0

Да, он использует параметр в URL как идентификатор для страницы профиля профиля для загрузки, а не текущего пользователя. – someone1

+0

Я просто обновил код, так как я сказал, что получаю ошибку 404. есть идеи? – exployre

Смежные вопросы