0

我创建了一个相当强大的应用程序。我实施了个人资料页面系统。现在,在编程和应用程序引擎方面,我是一个相当大的“菜鸟”,所以在这里要温柔,(请)。所以我知道您可以将参数传递给 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),])
4

1 回答 1

1

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

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

通常,这些映射是一个 URL 或 URL 正则表达式,带有一些语法/约定来识别变量。

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

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

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

您的路由模板可以更改为仅匹配整数,例如'/profile/<user_id:\d+>/',用户的 url 将类似于/profile/1024/.

于 2012-07-21T19:09:04.137 回答