【问题标题】:Custom templating using Jinja2使用 Jinja2 自定义模板
【发布时间】:2014-08-11 06:22:16
【问题描述】:

我正在尝试按如下方式使用 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. 标签应允许空格。

在 4 个中,只有 1 个和 2 个 jinja2 工作正常。

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

但是对于第 3 和第 4,它不起作用。(或者我弄错了。)

我发现只有 1 个名为“mustache”的模板引擎支持以上所有 4 个条件。但我不知道它在性能方面是如何工作的。

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

有人知道解决办法吗?

提前谢谢。

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

http://mustache.github.io/

https://github.com/defunkt/pystache

【问题讨论】:

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


    【解决方案1】:

    最后我继续mustache。这真的是很棒的模板引擎。

    http://mustache.github.io/

    用于 python 的胡子构建

    https://github.com/defunkt/pystache

    【讨论】:

      【解决方案2】:

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

      Jinja2 使用常规的 Python 2.x 命名规则。有效标识符 必须匹配 [a-zA-Z_][a-zA-Z0-9_]*。事实上非ASCII 当前不允许使用字符。这个限制可能会消失 一旦为 Python 3 完全指定了 unicode 标识符,就会立即消失。

      【讨论】:

        猜你喜欢
        • 2014-10-16
        • 1970-01-01
        • 2021-09-21
        • 1970-01-01
        • 2011-06-15
        • 1970-01-01
        • 1970-01-01
        • 2016-03-22
        • 1970-01-01
        相关资源
        最近更新 更多