我创造了一个非常强大的应用程序。我有一个配置文件页面系统实现。现在,在编程和应用程序引擎方面,我是一个非常大的'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 :(得分: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/
。