reddit get_comments action, кто-то может прояснить, что здесь происходит? - PullRequest
0 голосов
/ 19 июля 2010

Я пытаюсь понять источник Reddit, и я смотрю на метод действия get_comments front.py

Это действие, которое отображает историю:

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

1 Ответ

2 голосов
/ 20 июля 2010

В частности, что делает верхняя часть метода там, где есть маркер @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 () уже сгенерирован html, в форме ответа Pylons. Он рекурсивно вызывает .render () для базовых виджетов.

P.S. вам нужно добавить: // к ссылкам, так как он не позволяет публиковать более одной ссылки.

...