Web设计人员的Python模板

Jas*_*ker 5 python templating

什么是网页设计师的好模板引擎?我绝对喜欢我喜欢与程序员合作的东西.但网页设计师似乎有不同的思考方式,因此可能更喜欢不同的系统.

所以:

  • 网页设计师:您更喜欢使用什么模板引擎?
  • 程序员:你使用过哪些模板引擎,这使得与网页设计师合作变得容易?

akd*_*dom 6

Django的模板引擎相当不错.它非常强大,而不是踩太多脚趾.如果您正在使用Python,我会推荐它.我不知道如何将它与Django分开,但我怀疑看到Django非常模块化会非常困难.

编辑: 显然,独立使用Django的模板引擎迷你指南已经在我面前,感谢insin.


nos*_*klo 6

回答同一个问题时,我有很好的选票.

我的回答是:

Jinja2.

尼斯的语法,良好的定制的可能性.

整合得很好.可以沙盒,因此您不必完全信任您的模板作者.(Mako不能).

它也非常快,可以将模板编译为字节码并对其进行缓存,如下面的演示:

>>> import jinja2
>>> print jinja2.Environment().compile('{% for row in data %}{{ row.name | upper }}{% endfor %}', raw=True) 
from __future__ import division
from jinja2.runtime import LoopContext, Context, TemplateReference, Macro, Markup, TemplateRuntimeError, missing, concat, escape, markup_join, unicode_join
name = None

def root(context, environment=environment):
    l_data = context.resolve('data')
    t_1 = environment.filters['upper']
    if 0: yield None
    for l_row in l_data:
        if 0: yield None
        yield unicode(t_1(environment.getattr(l_row, 'name')))

blocks = {}
debug_info = '1=9'
Run Code Online (Sandbox Code Playgroud)

此代码由Jinja2即时生成.当然编译器会进一步优化它(例如删除if 0: yield None)


S.L*_*ott 5

看看Mako.

这是我如何应对网页设计师.

  1. 让他们模拟页面.在HTML中.
  2. 使用HTML作为模板的基础,用替换替换模拟的内容${...}.
  3. 折叠循环以处理重复.

使用if语句需要协商,因为模型是页面的一个版本,并且通常对某些材料的条件表示有一些解释.