我目前正在努力完成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()函数中实际传递?
答案 0 :(得分:2)
论坛上的一些帖子你可能会觉得有用 -
post_id是帖子的实际数据库(db)id。因此,您只需要在Posts db上为请求的特定页面ID执行get_by_id()。
是的,当您向其添加帖子时,数据库处理程序会自动生成ID。并且随机生成id以避免聚类。 (Corrected by Daniel)
对于传递给处理程序的变量(blog_id),请查看第3个链接中的答案。
有关详情,请参阅以上链接中的帖子。此外,论坛是一个非常好的聚会场所。如果你遇到困难,其他人也很有可能处于同样的境地。他们在论坛上问道!
坚持不懈!