jinja2忽略了最后一条新线?

时间:2016-11-27 18:47:58

标签: python-2.7 templates jinja2

我正在创建使用jinja2作为模板引擎生成特定文件的脚本。它会创建我期望的文件,除了最后一行。在模板中,我指定了最后一个空行,但是当创建文件时,它没有该行。

模板看起来像这样:

# -*- coding: utf-8 -*-

from openerp import fields, models, api


class {{ class_name }}(models.{{ model_type }}):
    """{{ class_docstring }}"""

    _{{ def_type }} = '{{ model }}'
# Here is actually empty line. Note comment does not exist on template. It is just empty line.

因此,此模板中共定义了10行。但是使用此模板创建的文件只有9行(不会创建最后一行)。

这是预期的行为,还是应该像我期待的那样创建最后一行?

这里处理渲染的数据和方法:

from jinja2 import Environment, FileSystemLoader

PATH = os.path.dirname(os.path.abspath(__file__))
TEMPLATE_ENVIRONMENT = Environment(
    autoescape=True,
    loader=FileSystemLoader(os.path.join(PATH, 'templates')),
    trim_blocks=False)
...
...
    @staticmethod
    def render_template(t, context):
        # For now it only supports standard templates.
        template_filename = TEMPLATE_FILES_MAPPING[t]
        return TEMPLATE_ENVIRONMENT.get_template(template_filename).render(
            context)

1 个答案:

答案 0 :(得分:1)

您可能正在寻找keep_trailing_newline选项:

  

默认情况下,Jinja2还会删除尾随换行符。保持单身   尾随换行符,将Jinja配置为keep_trailing_newline。

您可以将其添加到环境中:

TEMPLATE_ENVIRONMENT = Environment(
    ...
    keep_trailing_newline=True)