python - 关于 Mako 模块、Mako 的 TemplateLookup 函数和 Pyramid 的一些问题

标签 python pyramid mako

我在查看 Mako 的文档时发现了 Mako 的 TemplateLookup 函数:Using TemplateLookup .但是,我从未在 Pyramid 的文档中看到过这一点,因为我从来不需要指定模块目录。我的问题是:

  1. 创建了哪些“模块”?这些像预编译的 .pyc 文件吗?
  2. 使用 TemplateLookup 与 Pyramid 的 render() 或 render_to_response() 会让模板更快吗?
  3. Pyramid 是否默认创建这些模块,但隐藏在用户看不到的地方?
  4. 根据文档,它说这些模块缓存在内存中。这与通过 Beaker 进行缓存有何不同?

由于我网站上的所有内容都是动态内容(基本上除了页脚),我想找出缓存模板或加速渲染的最佳方法,这看起来是一种加速渲染的简单方法,如果它甚至可以。

最佳答案

请在下面找到您问题的一些答案:

  1. 对于您拥有的每个模板,都会创建一个 python 模块 (.py),其中包含呈现模板所需的代码。这只是模板的优化版本,可以从 python 轻松执行。执行该模块时,还会创建 .pyc 文件。要检查这一点,您可以进行以下实验:

    from mako.template import Template
    Template(filename='template.mako', module_directory='.')
    

    假设 template.mako 存在,您将看到创建了 template.mako.pytemplate.mako.pyc

  2. 查看 pyramid.mako_templating.MakoLookupRenderer.__call__ 我看到用于在 Pyramid 中渲染 mako 模板的方法已经使用了一个 TemplateLookup 对象,所以有不会有任何区别。

  3. 我在 pyramid.mako_templating.renderer_factory 中看到有一个名为 mako.module_directory 的设置。这与其他类似设置一起可用于控制 mako 库行为以创建模块文件。我看起来默认行为不是创建这些文件(mako.module_directory 默认为 None),但您当然可以做任何您需要的事情。

  4. TemplateLookup 中看到一个名为 cache_impl 的参数,默认设置为 beaker,所以我猜没有任何区别。

关于python - 关于 Mako 模块、Mako 的 TemplateLookup 函数和 Pyramid 的一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9028504/

相关文章:

python - REST 服务 Google Analytics 集成

python - subprocess.Popen() 错误(没有这样的文件或目录)调用带有参数作为字符串的命令

python - 发布数据以使用ajax查看

python - Pyramid 事务管理器未提交更新

python - 如何在 Pyramid Web 框架中设置内容类型 header 以响应特定文件类型

python - 在mako模板中迭代嵌套的dict

python - 如何将mako模板中的多个换行符转换为一个换行符?

python - 在 python 中模拟类上的多个方法的干净方法是什么?

python - Mako 在 Pyramid 中逃脱问题

python - macOS Sierra 安装 PyQt5 for python2.7