为用户创建唯一的配置文件页面

时间:2012-07-21 18:37:21

标签: python google-app-engine

我创造了一个非常强大的应用程序。我有一个配置文件页面系统实现。现在,在编程和应用程序引擎方面,我是一个非常大的'noob',所以请在这里温柔,(请)。所以我知道你可以将参数传递给url例子/ profile /。我只是不完全确定如何将其实现到我的代码或其背后的思考过程中。

这将是我的数据库:

class User(db.Model):
    name = db.StringProperty(required = True)
    pw_hash = db.StringProperty(required = True)
    email = db.StringProperty(required = True)

这是我的个人资料处理程序:

class Profile(MainHandler):
    def get(self):
        if self.user:
            current_user = str(self.user.name)
            key='ag5kZXZ-c3VpdGVnYW1lcnINCxIHSW1hZ2VkYhglDA '
            imgs  = db.GqlQuery("select * from Imagedb WHERE name =:1", current_user)
            for img in imgs:
                key = img.key() # this is the key
            self.render('profile.html', profile_image = key ,username = self.user.name, email = self.user.email, first_name = self.user.first_name, last_name = self.user.last_name, country = self.user.country, prov_state = self.user.prov_state, city_town = self.user.city_town)
        else:
            self.redirect('/register')

该配置文件目前也实现了显示图像系统。我的目标是基本建立你所谓的社交网络。 AKA,每个配置文件上的博客,消息系统以及其他一些系统。

我感谢任何帮助。即使他们只是你的想法/意见。我可以将我的网站加载到域中,因此可以向您显示,但我真的希望将其保密,直到完成:P。

非常感谢。

编辑:

这是我看到的解决方案,但我不知道如何实施它。

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),])

1 个答案:

答案 0 :(得分:1)

您希望将profile_id作为URL的一部分,并希望将该ID传递给您的请求处理程序。对应用程序定义的这种更改是定义'routes'和RequestHandler对象之间的映射:

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

通常,这些映射是URL或URL正则表达式,其中包含一些用于标识变量的语法/约定。

在这种情况下,'/profile/<profile_id>'是一个route template,它使用名称profile_id来匹配第二个路径段中传递的内容。

任何匹配都作为位置参数传递给RequestHandler函数。这由框架处理,您只需要为路径中的每个<name[:regex]>块添加参数。

发布的解决方案建议将unique_identifier字段添加到User模型的原因是存储规范的user_id / profile_id。假设您只使用整数来表示唯一的用户身份。

您的路线模板可以更改为仅匹配整数,例如'/profile/<user_id:\d+>/',用户的网址就像/profile/1024/