【问题标题】:Fastest stdlib approach to PHP-like templating in Python 2.x?Python 2.x 中 PHP 类模板的最快 stdlib 方法?
【发布时间】:2012-12-18 22:08:47
【问题描述】:

我目前正在进行的项目需要我使用 Python 的内置 HTTP 服务器,并且我需要自己构建动态 HTML 页面。 HTML 文件中的 %REPLACE_ME% 语法最近太烦人了,我很想用就地代码替换它,就像它在 PHP 中所做的那样。有没有什么好的解决方案可以用(或任何其他类似的语法)解析字符串并评估里面的代码?

编辑:

Jon Clements 指出我忘了解释为什么我需要就地代码。有两个原因 - 首先是我习惯了这种方法,后者是我想使用一些循环并且不想结束自己构建一半的 HTML 代码,例如模型文件中的表。标准库要求是因为我想尽可能少地保持依赖关系。不过,我可以允许一些非常纤薄的库。

【问题讨论】:

  • 我不懂 PHP。你在找python的Template Strings
  • 你可以考虑使用 Django 的模板系统。它不依赖 Django,还有 Mako 模板,很好link
  • @Pjuu 显然需要“stdlib” - 仍然不知道为什么
  • @JonClements 显然需要从主题中获取信息,而不仅仅是问题哈哈......模板字符串可能是最好的选择
  • 我在编辑中回答了你的问题。

标签: python template-engine


【解决方案1】:

如果你习惯 PHP 不能执行任意代码,一开始可能会很沮丧。

可以通过使用Python CGI 模块来做到这一点。 (但与 PHP 不同的是,它旨在通过接口而不是其他方式运行 - WSGI 是这里的方式 - 也不需要太多设置)。

如今,将程序逻辑与显示逻辑分开更为传统。这样就有“模板”从“视图”(通过响应对象返回信息)填充信息。它通常称为“MVC”,但并非所有“MVC”都是“MVC”。

我仍然记得 PHP 从“项目主页”开始的时候——它已经发展了很多,并且是一种不为 CGI 编写 C 的好方法……但是从那时起语言和技术都在进步……

【讨论】:

    【解决方案2】:

    根据最后一条评论,我将尝试概述一些选项:

    内置于 python 的最佳选项是 string 模块。

    如 cmets 中所述,文档位于:7.1. string

    有很多非常强大的第三方模板系统。我不是 PHP 大用户,但您会将这些分类为 Smarty 等...

    Django Template

    还有一本很棒的开源书籍与使用它们有关Django Book: Chapter 4 - Templating

    我从未在 Django 之外使用过这些,但我知道有一些框架可以让你使用它们。我不确定将它与另一个系统集成需要做多少工作,但肯定可以完成。

    Mako Templates

    这是另一个非常强大的模板系统。这被 P​​ylons 等一些大型框架使用。

    Jinja2

    这也是一个很好的模板系统。

    还有一些关于模板系统的其他讨论:What is the fastest template system for Python?。这只是一个示例,但那里的模板系统列表要大得多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-12
      • 2012-12-28
      • 2016-11-27
      • 2017-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多