模板解决方案类似于jinja2 / python / django的百里香“自然模板”?

时间:2016-12-25 19:34:31

标签: python django google-app-engine templates jinja2

我将一起使用,我对它感到满意,只是我希望与一位执行CSS和HTML的前端程序员合作而不强迫他运行整个叠加。

理想的模板是在不使用后端时呈现虚拟数据而不是动态数据,因此设计人员只需使用浏览器及其开发环境即可处理图形和布局。

Java具有模板引擎,即使它们具有从后端和框架获取数据的标记,也可以将模板呈现为普通html。

jinja2,django或python有类似内容吗?

2 个答案:

答案 0 :(得分:1)

我会说不,在Python中没有百里香。 正如Alex R提到的那样,维基百科将jina2列为自然的模板引擎。从仅语法的角度来看,这是正确的,但对于您所描述的用例却不是。

以下jinja2 HTML模板是有效的HTML:

<!DOCTYPE html>
<html>
  <head>
    <title>{{ variable|escape }}</title>
  </head>
  <body>
    <h1>List of elements</h1>
    <ol>
  {%- for item in item_list %}
      <li>{{ item }}{% if not loop.last %},{% endif %}</li>
  {%- endfor %}
    </ol>
  </body>
</html>

但是它将在浏览器中显示所有jinja2部分:

元素列表

    {%-用于item_list中的项目%}
  1. {{item}} {%,如果不是loop.last%},{%endif%}
  2. {%-endfor%}

与百里香等效的结果对前端开发人员来说可能不那么方便:

<!DOCTYPE html>
<html>
  <head>
    <title data-th-text="#{page.title}">Dummy Title</title>
  </head>
  <body>
    <h1>List of elements</h1>
    <ol data-th-each="item : ${items}">
      <li data-th-text="${item}">Dummy Element</li>
    </ol>
  </body>
</html>

结果:

元素列表

  1. 虚拟元素

答案 1 :(得分:1)

模板属性语言 (TAL) 和 Zope 页面模板 (ZPT)

我不确定这是什么时候出现的,但我已经监视这个空间好几年了,今天是我第一次注意到有一个 Python 版本的 TAL,我几年前确实在 PHPTAL 中遇到过,并且与 Thymeleaf 非常相似。

示例代码:

<p tal:content="user/getUserName">Placeholder</p>

<table>
  <tr tal:repeat="item context/cart">
    <td tal:content="repeat/item/number">1</td>
    <td tal:content="item/description">Widget</td>
    <td tal:content="item/price">$1.50</td>
  </tr>
</table>

更多示例位于 https://pagetemplates.readthedocs.io/en/latest/tal.html

reference implementation of TAL in Python 可以安装

pip install zope.pagetemplate

还有 other implementations 包括面向性能的 fork 和其他编程语言的移植。