使用Jinja2自定义模板

时间:2014-06-20 13:15:00

标签: python templates django-templates jinja2 template-engine

我正在尝试使用jinja2如下。

假设,

以下是标签:

tags: {"world":"WORLD", "c language": "Dennis Ritchie", "apple":"JOBS" }

输入:

HELLO {{ world }}, C is written by **{{ c language }}**, **}}** while **{{** java is written by {{ java }}, hola.

输出:

HELLO WORLD, C is written by Dennis Ritchie, **}}** while **{{** java is written by, hola.

总之,我必须做以下事情。

  1. 分隔符 - {{& }}
  2. 如果没有预定义的标签,则应该为空。
  3. 如果只有一个分隔符{{或}}(我的意思是不是对),它不应该考虑标记,否则它应该打印出来。
  4. 标签应该允许空格。
  5. 满分4分,只有1分和1分。 2 jinja2工作正常。

    from jinja2 import Template
    t = Template(input_string)
    t.render(context)
    

    但是对于第3和第3 4,它没有工作。(或者我错了。)

    我发现只有一个名为"小胡子"它支持上述所有4个条件。但是我不知道它是如何起作用的。

    由于jinja2是成熟的模板引擎,我认为可以自定义默认行为。

    有人知道解决方案吗?

    Thnx提前。

    我的主要测试表明,Mustache(Pystache)比jinja2快得多。如果可能请提供专家意见。

    http://mustache.github.io/

    https://github.com/defunkt/pystache

2 个答案:

答案 0 :(得分:1)

最后我继续胡子。它真的很棒的模板引擎。

http://mustache.github.io/

为python构建小胡子

https://github.com/defunkt/pystache

答案 1 :(得分:0)

我不认为这是可能的。 documentation对标识符非常清楚:

  

Jinja2使用常规的Python 2.x命名规则。有效标识符   必须匹配[a-zA-Z _] [a-zA-Z0-9 _] *。事实上非ASCII   目前不允许使用字符。可能会出现这种限制   只要为Python 3完全指定了unicode标识符,就会离开。