2012-07-21 62 views
0

我创建了一个相当有趣的应用程序。我有一个配置文件页面系统实施。现在,当谈到编程和应用程序引擎时,我是一个相当大的'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),]) 
+0

我发现你当前的一组标签,而不是一般的和不具说明性的。在他们看来,我无法阅读你正在使用什么编程语言,什么框架,或者你正在谈论一个基于Web的应用程序的事实。更好的标签可能吸引更好的答案 – MvG 2012-07-21 18:47:15

+0

感谢您的提示。我已经相应地更新了它们。 – suitegamer 2012-07-21 18:49:36

回答

1

您正在寻找URL的profile_id部分,并且希望将该ID传递给您的请求处理程序。这一变化让你的应用程序定义定义映射“路线”和RequestHandler对象之间:

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

通常这些映射是一个URL或URL的正则表达式与一些语法/会议,以确定变量。

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

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

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

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

+0

谢谢。我会看看我能做什么。 – suitegamer 2012-07-21 19:30:14

+0

好吧,我已经将我的模板中的所有配置文件按钮链接到正确的页面,即(localhost:8080/profile/admin)。我将current_user(我的标识符通过用户的名称)传递到映射到('/ profile/',Profile)的配置文件请求处理程序'get(self,current_user)'中。 User_re是我创建用户的reg表达式。我收到了404错误。我的贴图正在进行...... – suitegamer 2012-07-21 19:54:14

+1

您应该在您的问题中包含您当前的“app =”行,以便人们可以看到您使用的确切路线。 – stderr 2012-07-21 20:02:31

相关问题