有没有适用于Python和Django的HAML实现?

72

我偶然发现了HAML,这是一种有趣且美观的标记语言,用于标记内容并编写HTML模板。

由于我在Web开发中使用Python和Django,因此我想看看是否有Python实现的HAML(或类似概念 - 不需要完全相同),可用于替换Django模板引擎。

12个回答

38
您可能对SHPAML感兴趣:

http://shpaml.com/

我正在积极维护它。它是一个简单的预处理器,因此不与任何其他工具(如Genshi)相关联。我碰巧与Django一起使用它,因此有一些Django支持,但它不应干扰大多数其他用例。

4
SHPAML仍在积极开发吗?你似乎已经放弃了维护,而自那以后也没有太多进展。我考虑在Github上分叉它(不包括整个网站repo),但我不确定这是否是一个好主意,因为PyPI软件包似乎仍然存在。 - Alan Plum
5
根据 Google Groups 邮件列表,作者正在寻找一个维护者。我发现 hamlpy(https://github.com/jessemiller)稍微好一些,并且它的开发仍在积极进行中。 - bcoughlan
1
这个让人烦恼的事情是:如果不使用HTML,没有简单的方法来创建空元素,例如<div class="c" id="i"></div> - Callum Rogers

21

2
这个很好用,而且还有一个类似于SASS的观察器。绝对比排名第一的答案更活跃。 - bcoughlan
1
这个项目现在基本上已经死了;两年没有提交,也没有Python 3支持。不知道仓库/软件包维护者怎么能放弃控制权...但是这种情况应该发生。 - Nick T
@NickT Py3支持:hamlpy3 - Natacha

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!

7

你可能会对Plim感兴趣。它是Slim的成熟Python端口。


4

这并没有直接回答你的问题,但是HAML的CSS组件SASS可以与任何框架自由使用。我现在正在和Django一起使用它。


Sudhir,你能告诉我关于你如何设置这个的吗?安装使用“gem install”,所以我猜你下载了源代码并用其他方式进行了设置?请提供详细信息!=] - carl crott
1
这并不是很复杂...我正在使用Compass框架 - 它带有一个监视程序,可以自动将 .scss 文件编译为 .css。请查看 http://compass-style.org/。 - Sudhir Jonathan

3

我不确定GHRML位的状态,因为我最近才开始研究它。找不到它的仓库,原开发者也没有时间维护它,但是另一位对该项目感兴趣的人接手了维护工作。如果有关于此的额外信息将会很有帮助。

不幸的是,就像这些事情一样,我开始编写自己的HAML样式处理器;)

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

目前它还不能用于生产环境(它只是一个4天大的婴儿,但在这4天中我已经投入了60多个小时),但任何感兴趣的人都可以在这里查看。它已经实现了一系列功能,使其作为玩具非常有用,而且在接下来的一周内,我希望通过清理代码库来看到它替换掉我所有的自定义XSLT / xpath扩展和模板。


3

我在进行一些node.js工作时遇到了jade,当我回到Django时寻找类似的东西。我发现了Pyjade,虽然它几乎是我要找的东西,但在Django中处理错误和调试非常糟糕。


这太棒了。应该被接受的答案。在发表此评论时仍在积极开发中。 - Ben

3

我的项目PyHAML是一个Mako预处理器,可以提供非常类似于HAML的语法。一些Ruby代码在Python中无法很好地转换,因此存在一些差异,但其精神是相同的。


2
我会使用这个,因为它似乎是最标准的一个:https://pypi.org/project/HamlPy3/0.83.0/。假设你正在使用Python3,你可以毫不费力地在Django、Flask甚至是独立应用中使用它。原始答案: "最初的回答"。

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接