Skip to main content
 首页 » 编程设计

python之GAE 侧面板列出最近的帖子

2025年05月04日10linjiqin

我正在使用 python GAE 和 jinja2 模板构建博客。博客有两栏的典型布局,主要内容是大一栏,侧面板内容是小一栏。

现在我正在考虑将用户最近发表的 5 篇帖子添加到侧面板,这与 Google Blogger 的“我的博客列表”非常相似。但我担心的是,当我必须将此列表传递给不同的处理程序时用户转到其他页面。例如,如果用户在主博客页面,侧面板将显示 5 个最近的帖子。但如果用户转到另一个说,添加新帖子,则此页面仍显示 5最近的帖子。这是我当前执行此操作的方法的伪代码。

MainPage_handler(self): 
   self.render('main.html', recent_posts = function_to_get_recent_posts()) 
 
AddNewPost_handler(self): 
   self.render('add_post.html', recent_posts = function_to_get_recent_posts()) 

函数如下所示:

class Blog(db.Model): 
owner_id = db.StringProperty() 
...... 
created = db.DateTimeProperty(auto_now_add = True) 
 
@classmethod 
def recent_post(cls, limit, onwer_name): 
    blogs = cls.all().filter('owner_id = ', onwer_name).order('-created').fetch(limit) 
    return blogs; 

有没有更好的方法来实现这一点?

请您参考如下方法:

由于您需要 5 个最新的帖子,我建议在重定向或呈现新页面时“重新计算”这些内容是有意义的。在这种假设下,我不得不说你的做法似乎是在做需要做的事情,除非它导致页面加载时间或其他问题出现问题,否则就不要管它了。也许如果您不想每次都访问数据库,您可以使用 GAE 内置的 memcached 选项缓存这些最近的帖子,但我想这可能已经是您的函数返回的内容。

我从您的函数中看到,您每次调用该函数时似乎都在直接访问数据库。每次添加帖子时缓存 5 个最近的帖子怎么样?这样,您只会在有人添加帖子(在侧面板帖子的上下文中)时访问数据库,而不是每次重定向等时。

查看内存缓存 here

但是,如果您使用的是 GAE ndb,那么它会自动管理缓存。