0

我正在尝试了解 reddit 的来源,我正在查看 front.py 的 get_comments 操作方法

这是显示故事的动作:

http://code.reddit.com/browser/r2/r2/controllers/front.py#L139

具体来说,有@Validate 标记的方法的顶部是什么?

在返回附近的底部,它正在将对象发送到视图页面。

这里调用的是哪个视图页?

211 res = LinkInfoPage(link = article, comment = comment,
212                            content = displayPane,
213                            subtitle = _("comments"),
214                            nav_menus = [CommentSortMenu(default = sort),
215                                         NumCommentsMenu(article.num_comments,
216                                                         default=num_comments)],
217                            infotext = infotext).render()
218         return res
4

1 回答 1

2

具体来说,有@Validate 标记的方法的顶部是什么?

@validate 是验证装饰器,用于验证和处理请求中的参数。您可以在 http code.reddit.com/browser/r2/r2/controllers/validator/validator.py#L129 查看其来源

在返回附近的底部,它正在将对象发送到视图页面。这里调用的是哪个视图页?

它不使用“查看页面”,它在那里使用小部件。LinkInfoPage包含 PaneStack (http code.reddit.com/browser/r2/r2/lib/pages/pages.py#L1317)

所以 res = LinkInfoPage(...).render() 已经以 Pylons 响应形式生成了 html。它在底层小部件上递归调用 .render() 。

PS你需要在链接中添加://,因为它不允许发布多个链接。

于 2010-07-20T13:37:16.723 回答