我已经阅读了using different renderers或{a2},但我想知道是否有更好的方法来处理这种模式。在
现在,在我看来,我正在向模板返回一组项:
@view_config(
route_name = 'name',
permission = 'perm',
renderer = 'r.mako'
)
def r( request ):
items = get_items()
return { 'items': items }
现在,我希望ajax版本只呈现它的一个子集,也包含一些数据。我当前的工作代码:
^{pr2}$我想特别是我想知道是否有一种更干净的方法来覆盖渲染器,然后将其包装在某个东西中,而不显式地调用render,并确保dict正确或请求作为param。谢谢
我不熟悉pyramid或“r.mako”所引用的内容,但您可能可以在调用控制器之前,使用一个检查请求的Accepts头的自定义函数来钩住该请求,寻找“text/javascript”或“application/json”作为最前面的接受,然后在request对象上设置一个标志(或者将该方法分解为在r函数中使用)。在
然后做一个定制的呈现器来处理mako解析或者转储一个json字符串
如果不需要对项目进行任何额外的处理,那么这个方法也意味着不需要额外的leg工作,只需将结果作为正常返回,并在另一端接收json对象。在
如果不能在调用控制器之前挂入金字塔,可以编写一个方便的函数来调用is_json(request),并在控制器和呈现器中使用它来确定输出和设置内容类型头
我建议使用两个视图,这两个视图允许您对相同的数据应用不同的“外观”(响应)。在
如果您害怕重复视图配置,Pyramid 1.3在基于类的视图上提供了一个很酷的新功能:
^{2}$相关问题 更多 >
编程相关推荐