1

我目前正在学习 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的时候post_id是怎么产生的呢?这些 id 是在什么基础上生成的?它们是随机的吗?另外,post_id 是如何在 PostPage 处理程序的 post() 函数中实际传递的?

4

1 回答 1

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

post_id 是帖子的实际数据库 (db) id。因此,您只需要在 Posts db 上为请求的特定页面 id 执行 get_by_id() 。

是的,当您向其中添加帖子时,数据库处理程序会自动生成 ID。并且 id 是随机生成的,以避免聚类。(由丹尼尔更正

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

有关详细信息,请参阅上述链接中的帖子。此外,论坛是一个很好的聚会场所。如果你被卡住了,很有可能其他人也有同样的情况,他们在论坛上问过!

保持大胆!

于 2013-11-10T22:06:22.757 回答