Google App Engine:永久链接生成

时间:2013-11-10 21:23:35

标签: python database google-app-engine key gql

我目前正在努力完成Udacity的Web开发课程,当我浏览他们的博客中每个帖子的永久链接的示例源代码时,我遇到了疑问。现在这里是我被困的代码:

class PostPage(BlogHandler):
    def get(self, post_id):
        key = db.Key.from_path('Post', int(post_id), parent=blog_key())      #the created key is a key of an entity of kind 'Post' with id 'post_id' having a parent of kind defined by blog_key()
        post = db.get(key)    #the get() function basically retrieves the instance(in this case, post of the blog) 
                          #that has the 'key' as its unique identifier.
        if not post:
            self.error(404)
            return

        self.render("permalink.html", post = post)

现在,该课程的教授说,如果提交了帖子,post_id会立即从URL传入。这是相同的处理程序:

('/blog/([0-9]+)', PostPage)

那么当用户提交帖子时,post_id是如何实际生成的?这些ID产生的基础是什么?它们是随机的吗?另外,post_id如何在PostPage处理程序的post()函数中实际传递?

1 个答案:

答案 0 :(得分:2)

论坛上的一些帖子你可能会觉得有用 -

  1. http://forums.udacity.com/questions/6012751/permalinks/6013385
  2. http://forums.udacity.com/questions/6014750/a-couple-helpful-links-for-hw-3#cs253
  3. http://forums.udacity.com/questions/6014750/a-couple-helpful-links-for-hw-3/6015526
  4. post_id是帖子的实际数据库(db)id。因此,您只需要在Posts db上为请求的特定页面ID执行get_by_id()。

    是的,当您向其添加帖子时,数据库处理程序会自动生成ID。并且随机生成id以避免聚类。 (Corrected by Daniel

    对于传递给处理程序的变量(blog_id),请查看第3个链接中的答案。

    有关详情,请参阅以上链接中的帖子。此外,论坛是一个非常好的聚会场所。如果你遇到困难,其他人也很有可能处于同样的境地。他们在论坛上问道!

    坚持不懈!