1

Jinja2テンプレートエンジンを使用してPythonでGoogleAppEngineを使用しています。

これはばかげた解決策かもしれませんが、私は数千人のユーザーのリストを持っており、現在、彼らは自分のプロフィールページにしかアクセスできず、ログインする必要があります。私はすべてのユーザーに彼らのプロフィールページのためのユニークな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には、ユーザーの名前が表示されてから、最近のすべての投稿が表示されます。

アップデート:

これが私の現在のコードですが、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と入力してみたところ、どうすればテストできますか

更新:取得したIDはOpenID URLではなく、各ユーザーに与えられたアプリ固有のIDであり、これが正しい使用方法です。

4

1 に答える 1

2

これを行う簡単な方法は、各ユーザーに一意のURL識別子を割り当てる(またはユーザーのキー名を使用する)ことです。これにより、ユーザーのIDでクエリを実行したり、一意の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),])
于 2012-06-28T19:16:55.587 に答える