2016-11-27 66 views
3

我創建腳本,使用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) 

回答

0

keep_trailing_newline選項可能是你在找什麼:

默認情況下,Jinja2的還會刪除尾隨的換行符。要保持單個 尾隨的換行符,請將Jinja配置爲keep_trailing_newline。

您可以將其添加到環境:

TEMPLATE_ENVIRONMENT = Environment(
    ... 
    keep_trailing_newline=True)