网页设计师的Python模板

5 投票
7 回答
1921 浏览
提问于 2025-04-11 09:35

对于网页设计师来说,有哪些好的模板引擎呢?作为程序员,我当然有自己喜欢用的工具。不过,网页设计师的思维方式可能和程序员不太一样,他们可能会更喜欢其他的系统。

所以:

  • 网页设计师们:你们喜欢用哪个模板引擎呢?
  • 程序员们:你们用过哪些模板引擎,让和网页设计师合作变得更简单?

7 个回答

6

Django的模板引擎相当不错。它功能强大,但又不会让人觉得太复杂。如果你在用Python,我会推荐你试试这个模板引擎。我不太清楚怎么把它单独拿出来用,但我觉得应该不难,因为Django本身是模块化的。

补充: 看来我面前已经有一份关于如何单独使用Django模板引擎的迷你指南,谢谢insin

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'

这段代码是由Jinja2动态生成的。当然,编译器会进一步优化它(比如去掉 if 0: yield None 这样的代码)

5

看看这个Mako网站。

这是我和网页设计师合作的方式。

  1. 让我请他们先设计一个页面的草图,最好用HTML格式。
  2. 然后用这个HTML作为模板的基础,把草图里的内容替换成${...}这样的占位符。
  3. 再加入循环的部分来处理重复的内容。

使用条件语句的时候需要沟通,因为草图只是页面的一个版本,通常会有一些原因来解释为什么某些内容需要根据情况来展示。

撰写回答