如何将pystache与金字塔相结合?

2024-06-02 08:16:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用pystache在pyramid应用程序中提供的基于类的视图,但我不完全确定如何正确地集成这两者。我已经读过this,但它没有讨论使用基于类的视图。在

如果我想使用基于类的视图,如何为pystache创建一个新的呈现器?有人能帮我吗?在

另外,虽然我已经知道了mustache是如何工作的,但似乎找不到关于python实现(pystache)的太多信息。有人能给我指出正确的方向吗?在


Tags: 视图pyramid信息应用程序this方向mustachepystache
2条回答

实现MustacheRendererFactory

class MustacheRendererFactory(object):
  def __init__(self, info):
    self.info = info

  def __call__(self, value, system):
    package, filename = resolve_asset_spec(self.info.name)
    template = os.path.join(package_path(self.info.package), filename)
    template_fh = open(template)
    template_stream = template_fh.read()
    template_fh.close()
    return pystache.render(template_stream, value)

更新配置程序设置,可能在__init__.py

^{pr2}$

在您的视图中使用:

@view_config(route_name='myview', renderer='myapp:templates/notes.mustache')
def my_view(request):
  # ...

在pyramid中,renderer视图参数是一个字符串,它不能是一个类。因此,没有办法只说

@view_config(route_name='someroute', renderer=MyClassBasedView)

最简单的解决方案可能是手动调用渲染器。在

^{pr2}$

如果你真的想使用金字塔渲染系统,你可以使用一个假的渲染器字符串,格式为“点式路径到类+扩展”。然后,呈现器工厂将解析虚线路径以获取类并返回呈现器。在

我必须说,我不确定我是否理解在金字塔中如何使用基于类的pystache视图。用返回值的方法定义类似乎比返回dict更复杂,并且在这些方法中计算值而不是在金字塔视图中计算值可能会导致代码更加混乱。不过,继承可能有一些我没有考虑过的优势。在


至于pystache,文档似乎仅限于pypi page,但是the code是干净且易于阅读的(我在回答问题之前浏览了一下)。在

相关问题 更多 >