只应列出与当前页面关联的注释,因此将再次修改查询以包含页面ID。但是,在这种情况下,我们还必须传递pageid参数,该参数将传递给paginator中的任何h.url_for()调用。
来自http://pylonsbook.com/en/1.1/simplesite-tutorial-part-2.html
我不能让这个工作,paginator没有把东西传递给h.url_for,我按照教程。我必须将pageid添加到list.html中的h.url_for。我该如何解决?
部分代码:
${h.link_to(
comment.id,
h.url_for(
controller=u'comment',
action='view',
id=unicode(comment.id)
)
)}
但是在我输入
之前它无法正常工作 ${h.link_to(
comment.id,
h.url_for(
controller=u'comment',
action='view',
id=unicode(comment.id),
pageid = c.page.id
)
)}
编辑:问题是在教程中它表示分页器将使用此代码传递:
c.paginator = paginate.Page(
comments_q,
page=int(request.params.get('page', 1)),
items_per_page=10,
pageid=c.page.id,
controller='comment',
action='list'
)
return render('/derived/comment/list.html')
但除非我手动将其放入
,否则不会发生答案 0 :(得分:1)
您需要将pageid传递给方法url_for,因为路由需要pageid。
map.connect('/page/{pageid}/{controller}/{action}', requirements={'pageid':'\d+'})
map.connect('/page/{pageid}/{controller}/{action}/{id}', requirements={'pageid':'\d+', 'id':'\d+'})
然后在评论控制器的之前方法
中处理pageiddef __before__(self, action, pageid=None):
page_q = meta.Session.query(model.Page)
c.page = pageid and page_q.filter_by(id=int(pageid)).first() or None
if c.page is None:
abort(404)
然后,c.page设置为当前页面,评论可以链接到此c.page。