72

我碰巧偶然发现了HAML,这是一种用于标记内容和为 HTML 编写模板的有趣且漂亮的方法。

由于我使用 Python 和 Django 来满足我的 Web 开发需求,我想看看是否有 HAML 的 Python 实现(或一些类似的概念——不必完全相同)可用于替换 Django 模板引擎。

4

12 回答 12

38

您可能对 SHPAML 感兴趣:

http://shpaml.com/

我正在积极维护它。它是一个简单的预处理器,因此它不依赖于任何其他工具,例如 Genshi。我碰巧将它与 Django 一起使用,所以有一点 Django 支持,但它不应该干扰大多数其他用例。

于 2009-12-19T21:33:50.660 回答
21

我会检查GHRML, Genshi 的 Haml。作者承认它基本上是 Python 的 Haml,并且大部分语法是相同的(并且它在 Django 中工作)。这里有一些 GHRML 只是为了向您展示它们有多接近:

%html
  %head
    %title Hello World
    %style{'type': 'text/css'}
      body { font-family: sans-serif; }
    %script{'type': 'text/javascript', 'src': 'foo.js'}

  %body
    #header
      %h1 Hello World
    %ul.navigation
      %li[for item in navigation]
        %a{'href': item.href} $item.caption

    #contents
      Hello World!
于 2009-02-06T09:36:46.713 回答
21

我正在寻找相同的。我没有尝试过,但发现了这个:

http://github.com/jessemiller/HamlPy

于 2010-07-24T11:56:45.470 回答
6

您可能对Plim感兴趣。这是Slim的成熟 python 端口。

于 2013-07-31T12:16:42.920 回答
4

这实际上并不能回答您的问题,但是 HAML 的 CSS 组件SASS可以在任何框架中自由使用。我现在正在与 Django 一起使用它。

于 2009-10-17T17:18:24.910 回答
3

我的项目PyHAML是一个 Mako 预处理器,它为您提供非常类似于 HAML 的语法。一些 Ruby 不能很好地转换为 Python,因此存在一些差异,但精神是相同的。

于 2012-05-23T03:57:01.697 回答
3

我在做一些 node.js 工作时遇到了玉,当返回 Django 时,我正在寻找类似的东西。我找到了 Pyjade,虽然它几乎正是我正在寻找的东西,但它在 Django 中处理错误和调试相当糟糕。

于 2013-04-28T02:41:06.463 回答
3

我不确定 GHRML 位的状态是什么,因为我最近才调查它。找不到它的 repo,原始开发人员不再有时间进行维护,并且对该项目感兴趣的其他人进行了维护。任何有关此的额外信息都会有所帮助。

不幸的是,随着这些事情的发展,我开始编写自己的 HAML 样式处理器;)

http://dasacc22.wordpress.com/2010/05/03/python-implementation-of-haml/

目前它根本不适合生产使用(它现在实际上是一个 4 天大的婴儿,但在那 4 天里塞满了 60 多个小时),但任何有兴趣的人都可以在这里查看。它已经实现了一系列功能,使其可以作为玩具使用,当我在下周清理代码库时,我希望看到它取代我拥有的所有自定义 XSLT/xpath 扩展和模板。

于 2010-05-04T13:22:42.363 回答
2

我刚刚制作了这个http://github.com/fitoria/django-haml它仍处于早期阶段,但它可以工作。

于 2010-08-16T20:55:55.423 回答
2

Daniel Skinner 的项目(如上所述)似乎已重命名为 DMSL。它看起来非常强大,模拟 HAML,但允许您在其语法中使用 python 函数、lambdas、理解等:https ://github.com/dasacc22/dmsl

于 2011-03-02T18:46:17.037 回答
2

我会用这个,它似乎是最标准的一个:https ://pypi.org/project/HamlPy3/0.83.0/

假设你使用的是 Python3,你不应该在 Django、Flask 甚至独立使用它时遇到任何问题。

于 2019-07-14T17:40:30.883 回答
0

您可能想尝试Hypertag:一种新的基于缩进的 HTML 模板语言,受到 HAML 的强烈启发。Hypertag 具有非常简洁的语法,提供完整的Django 集成和许多高级功能:本机自定义标签、DOM 操作、类似 Python 的导入、复杂的表达式、过滤器、控制块(for、if、try...)等等。看这里:

免责声明:我是作者,如果出现任何问题或疑问,我很乐意提供帮助。

于 2021-04-06T20:02:42.777 回答