我将jinja2与google-app-engine一起使用,我对它感到满意,只是我希望与一位执行CSS和HTML的前端程序员合作而不强迫他运行整个叠加。
理想的模板是在不使用后端时呈现虚拟数据而不是动态数据,因此设计人员只需使用浏览器及其开发环境即可处理图形和布局。
Java具有模板引擎thymeleaf,即使它们具有从后端和框架获取数据的标记,也可以将模板呈现为普通html。
jinja2,django或python有类似内容吗?
答案 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部分:
与百里香等效的结果对前端开发人员来说可能不那么方便:
<!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)
模板属性语言 (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 和其他编程语言的移植。